一般递归&尾递归&循环递归
【摘要】
一、先举2个栗子:
(1)阶乘
阶乘的一般递归int factorial(int n){ if(n<=1) return 1; return (n*factorial(n-1));}阶乘的尾递归int factorial_tail(int n,int res){ if(n<=1) return r...
一、先举2个栗子:
(1)阶乘
阶乘的一般递归
int factorial(int n){
if(n<=1) return 1;
return (n*factorial(n-1));
}
阶乘的尾递归
int factorial_tail(int n,int res){
if(n<=1) return res;
return factorial_tail(n-1,n*res);
}
阶乘的迭代形式
int factorial_loop(int n){
int r=1;
for(int i=1;i<=n;i++){
r=r*i;
return r;
}
(2)斐波那契数列递归
斐波那契数列的一般递归
int fibonacci(int n){
if(n<=3)
return 1;
else{
return fibonacci(n-1)+fibonacci(n-2);
}
}
斐波那契数列的尾递归
int fibonacci_tail(int n,int acc1,int acc2){
if(n<2)
return acc1;
else
return fibonacci(n-1,acc2,acc1+acc2);
}
}
斐波那契数列的循环递归
int fibonacci_loop(int n){
int a=0;
int b=1;
if(n==1)
return 1;
if(n==2)
return 1;
for(int i=3;i<=n;i++){
int temp=a+b;
a=b;
b=temp;
}
return b;
}
二、递归及其优化
https://mp.weixin.qq.com/s/mJ_jZZoak7uhItNgnfmZvQ
文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。
原文链接:andyguo.blog.csdn.net/article/details/103946119
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)