递归(recursion):程序调用自身的编程技巧。
递归满足2个条件:
1)有反复执行的过程(调用自身)
2)有跳出反复执行过程的条件(递归出口)
例1:
n! = n * (n-1) * (n-2) * ...* 1(n>0)
int recursive(int i){ int sum = 0; if (0 == i) return (1); else sum = i * recursive(i-1); return sum;}例2:汉诺塔问题
void hanoi(int n,int p1,int p2,int p3){ if(1==n) cout<<"盘子从"<<p1<<"移到"<<p3<<endl; else { hanoi(n-1,p1,p3,p2); cout<<"盘子从"<<p1<<"移到"<<p3<<endl; hanoi(n-1,p2,p1,p3); }}例3;斐波那契数列
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……
这个数列从第三项开始,每一项都等于前两项之和。
long Fib(int n){ if (n == 0) return 0; if (n == 1) return 1; if (n > 1) return Fib(n-1) + Fib(n-2);}
新闻热点
疑难解答