用户:
ZzhAllen查看:8 回复:3 评论:8 创建时间:2022-08-09T16:15:13
这是本蒟蒻发的第一篇算法教程,不喜勿喷(((
众所周知啊,递归是一个非常简单,非常容易上手的算法。
但是递归也有一个致命的缺点:时间复杂度太长(最大缺点)
那么递归是什么呢?
简单来说,就是定义函数中,在函数体里调用自己(套娃
举个例子:
int function(int x){
return function(x);
}
但是聪明的大佬们就发现了,如果调用这个函数将会无尽循环()
so,我们需要给他一个终止条件以及递增:
int function(int x){
if(x==5)return 5;
return function(x+1);
}
这样我们就能让这个递归函数返回int 5了
而我们把这个终止条件叫做出口
是不是very的简单呢()
然后稍微增加一点难度:
求10的阶乘
这个问题非常的简单a,我们只需要写出一个简简单单的递归函数就好了()
代码如下:
#include<cstdio>//常规操作
using namespace std;
/*演示图:
从5递减至1,并累乘
5 -> 4 -> 3 -> 2 -> 1 结束,开始从后往前传输返回值
5 <- 4 <- 3 <- 2 <- 1 将结果传输回5
*/
int function(int x){
if(x==1)return 1;//当为1时返回1,代表到达了最后,开始从1往上乘
return x*function(x-1); //每次递减,直到到达出口后传值累乘
}
int main()
{
printf("%d",function(10));
}