猫史档案馆


【C++】算法教程(1)——递归

用户:ZzhAllenZzhAllen查看: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));
}

 

 


回复

上一页1 页 / 共 1下一页
tiger666250tiger666250

dfs:(((

点赞0


评论


不知道该叫啥的一只萌新不知道该叫啥的一只萌新

gcb:((

点赞0


评论


囧仙_official囧仙_official

递归不是算法,是一种实现方式(

dfs用递归实现,并且dfs也可以不用递归用栈实现,所以递归绝对不是算法()()

点赞0


评论