一般递归&尾递归&循环递归
【摘要】
一、先举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)