C编程练习-递归
如果函数递归缺少出口设置,容易出现类似死循环的效果,且很快内存耗光程序异常结束
注意:如果能用循环解决的问题,不要用递归,因为递归比循环更耗时耗内存
1.使用递归解决计算第N项斐波那切数列
斐波那契数列:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
1,1,2,3,5,8,13,21,34,55,89...
代码:
#include<stdio.h> int func_f(int n) { if(1 == n || 2 == n) return 1; return func_f(n-1) + func_f(n-2); } int main(int argc,const char* argv[]) { printf("%d \n",func_f(5)); }
2.使用递归模拟N层汉诺塔的移动过程
#include<stdio.h> //s起点 m中间点 e终点 void hanio(int n,char s,char m, char e) { if(1 == n) { printf("%d from %c to %c\n",n,s,e); return; } hanio(n-1,s,e,m); printf("%d from %c to %c\n",n,s,e); hanio(n-1,m,s,e); } int main(int argc,const char* argv[]) { hanio(4,'A','B','C'); }

浙公网安备 33010602011771号