用户:
ZzhAllen查看:108 回复: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));
}
递归不是算法,是一种实现方式(
dfs用递归实现,并且dfs也可以不用递归用栈实现,所以递归绝对不是算法()()
点赞0
评论
有一说一,递归的时间复杂度是具体问题具体分析的,而且如果会记忆化搜索可以起飞(
递归事算法吧(((dfs也不一定要用递归(((记忆化搜索就有dp那味了
不是吧()
我们老师曾经甚至说过去上课听到别人说递归事算法就要上去给他一拳awa
记忆化搜索只是dp的一种实现方式而已()
所以递归≠dfs,但是dfs需要递归实现,所以递归只能用于实现算法,所以不是算法(
c还真是()()是《编程技巧》
()