斐波那契数列:
#include <iostream>
using namespace std;
int factorial(int n)
{
if (n == 1)
{
return 1;
}
return n*factorial(n - 1);
}
int main()
{
int n;
cin >> n;
cout << factorial(n) << endl;
return 0;
}
汉诺塔(Hanoi):
#include <iostream>
using namespace std;
void hanoi(int n, char a, char b, char c)
{
if (n == 1)
{
cout << n << " " << a << " " << c << endl;
}
else
{
hanoi(n - 1, a, c, b);
cout << n << " " << a << " " << c << endl;
hanoi(n - 1, b, a, c);
}
}
int main()
{
int n;
cout << "请输入汉诺塔层数(正整数):" << endl;
cin >> n;
cout << "汉诺塔运行过程:" << endl;
hanoi(n, 'A', 'B', 'C');
return 0;
}
适合使用递归的情况:
(1)问题的解决需要将问题分解成相同问题的娇小版本,且存在一个明显能用循环来实现的方案;
(2)你正在处理的数据结构式递归的(比如链表)。
适合用循环的情况:
(1)很明显能用一个简单的循环来解决问题(例如,要将一串数字相加,你当然可以写一个递归函数,但是这不值得);
(2)正在处理的数据结构实用数字进行索引时,如数组。
(本段文字摘自于《C++程序设计——现代方法》)