又是老台词:欢迎大家来到一晚一度的leetcode刷题日记。今天我们来看看我们的一位“朋友”--递归。没错,就是他,可能编程小白在学C语言时心里的噩梦就是他,别看他只是短短两个,其实他变起花样来,连博主都怕,真的。其实,递归是研究算法问题最常见见到的朋友之一(后面的回溯也是,hhh剧透一下)。所以博主决定用几篇的文章来致敬一下老哥,以此突出他的重要性。
下面直接上题目。我们先从最简单的斐波那契数列开始(小白最常遇到的问题):
解题代码(最简单的C语言版,其实此题c++写也是一样的):
nt fib(int n) {
if (n < 2) {
return n;
}
int p = 0, q = 0, r = 1;
for (int i = 2; i <= n; ++i) {
p = q;
q = r;
r = p + q;
}
return r;
}
上面的代码其实没用到递归,只是用到了循环迭代
下面的代码才用到递归
解题代码:
nt fib(int n)
{
if(n<2)
return n;
else fib(n)=fib(n-1)+fib(n-2);
return fib(n);
}
大家觉得代码量有没有减少啊,其实这就是递归的好处,可以使问题解决更加方便。
好啦,今天的分享就到这啦,大家早点睡哦,不要熬夜哦。
本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览.