我是C++的新手。我正在做一个练习,其中包括构建一个非常简单的C++程序。我在哪里可以找到一些简单的C++递归代码示例?
我的老师强调,它必须使用函数和方法递归。我想知道如何在C++中使用递归方法。我正在寻找一些代码示例,但我没有找到任何东西。我深深的担忧是一个方法在不知道其类/实例名称的情况下如何调用它自己。
我是C++的新手。我正在做一个练习,其中包括构建一个非常简单的C++程序。我在哪里可以找到一些简单的C++递归代码示例?
我的老师强调,它必须使用函数和方法递归。我想知道如何在C++中使用递归方法。我正在寻找一些代码示例,但我没有找到任何东西。我深深的担忧是一个方法在不知道其类/实例名称的情况下如何调用它自己。
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)
}
谢谢。这正是我所期待的。 – 2011-12-18 19:03:48
我猜你的作业是写一个Recursive Descent Parser。一个简单的例子在C: uBASIC
这是一个LL(1)编译器。他们甚至给我们算法来解析。 – 2011-12-18 19:05:33
问题改为不再编译 – 2011-12-19 17:52:01
一个例子:
#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
有趣。谢谢。 – 2011-12-18 19:03:58
你试过问你喜欢的搜索引擎,输入 “C++递归”? – Mat 2011-12-18 13:37:11
“我正在做一个练习,其中包括建立一个非常简单的C++编译器” - 这是一个笑话吗? – Ulterior 2011-12-18 13:38:20
如果使用额外的实例指针将成员函数实现为自由函数,那么递归只是将当前实例的'this'指针传递给下一个调用......您究竟为什么感到困惑? – 2011-12-18 13:42:00