2011-12-18 113 views
-1

我是C++的新手。我正在做一个练习,其中包括构建一个非常简单的C++程序。我在哪里可以找到一些简单的C++递归代码示例?

我的老师强调,它必须使用函数和方法递归。我想知道如何在C++中使用递归方法。我正在寻找一些代码示例,但我没有找到任何东西。我深深的担忧是一个方法在不知道其类/实例名称的情况下如何调用它自己。

+1

你试过问你喜欢的搜索引擎,输入 “C++递归”? – Mat 2011-12-18 13:37:11

+6

“我正在做一个练习,其中包括建立一个非常简单的C++编译器” - 这是一个笑话吗? – Ulterior 2011-12-18 13:38:20

+0

如果使用额外的实例指针将成员函数实现为自由函数,那么递归只是将当前实例的'this'指针传递给下一个调用......您究竟为什么感到困惑? – 2011-12-18 13:42:00

回答

5
class Foo 
{ 
public: 
    Foo(int offset) : offset(offset) {} 

    int bar(int x) 
    { 
     if (x == 0) 
     { 
      return offset; // Base-case 
     } 
     return x + bar(x-1); // Recursion 
    } 

private: 
    int offset; 
}; 


int main() 
{ 
    Foo foo(7); 
    std::cout << foo.bar(5) << "\n"; Prints "22" (5+4+3+2+1+7) 
} 
+0

谢谢。这正是我所期待的。 – 2011-12-18 19:03:48

3

Wikipedia: Recursion

我猜你的作业是写一个Recursive Descent Parser。一个简单的例子在C: uBASIC

+0

这是一个LL(1)编译器。他们甚至给我们算法来解析。 – 2011-12-18 19:05:33

+0

问题改为不再编译 – 2011-12-19 17:52:01

1

一个例子:

#include <iostream> 
    using namespace std; 

    int factorial(int n) // 1, 1, 2, 6, 24, 120, 720, ... 
    { 
    if (n == 0) return 1; 
    return n * factorial(n-1); 
    } 

    main() 
    { 
    int n = 7; 

    cout << "Enter a non-negative integer: "; 
    cin >> n; 
    cout << "The Factorial of " << n << " is " << factorial(n) << endl; 

    return 0; 
    } 

你可以在这里找到更多的例子:http://www.cstutoringcenter.com/tutorials/cpp/cpp6.php

+0

有趣。谢谢。 – 2011-12-18 19:03:58

相关问题