对比递归和循环来实现n的阶乘来更深入了解递归

发布时间:2024年01月13日

为了方便看,我们先都求5的阶乘

循环

#include <iostream>
using namespace std;
int n=5;
int main(){
int sum=1;

for(int i=1;i<=n;i++)
{
sum*=i; 
}
cout<<sum<<endl;
return 0;
}


递归

递归要有出口(基线条件/退出条件),递归主体(调用自己的代码)

#include <iostream>
using namespace std;
int n=5;

int fun(int n){
if(n==0||n==1){return 1;}//递归出口 
return n*fun(n-1);//递归主体 
} 

int main(){
cout<<fun (5);
return 0;

}

``

原理
	递归在内存里使用栈空间
	![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d947152742e84dbd8990078555c003f2.png)最先调用的在栈的最底层
	所以递归的时间复杂度整不好很高,会把内存占爆
	而且通过这个手算递归的过程也可以看出这递归时间复杂度也很慢啊,
	还不如循环
[附上一个递归的时间复杂度的分析,取决于不同的问题规模啊](https://zhuanlan.zhihu.com/p/357693438?utm_id=0)

文章来源:https://blog.csdn.net/weixin_45800887/article/details/135572453
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。