递归的定义:
- 若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象时递归的
- 若一个过程直接的或间接的调用自己,则这个过程是递归的
用到递归的三种情况:
1、定义是递归的:比如数学上的阶乘函数、幂函数、斐波那契数列,定义和计算都是递归的
2、数据结构是递归的:链表就是一个递归的数据结构,树形结构也是一种递归的结构,因为其基于多重链表实现
3、问题的解法是递归的:汉诺塔问题
若设盘子总数为n,在算法中盘子的移动次数为:(1)n=0, moves(n)=0;(2)n>0, 2moves(n-1)+1
void Hanoi(int n, string A, string B, string C){
if( n == 1 ){
cout << "Move top disk from peg " << A << " to peg " << C << endl;
}
else{
Hanoi(n-1, A, C, B);
cout << "Move top disk from peg " << A << " to peg " << C << endl;
Hanoi(n-1, B, A, C)