递归讲解(附经典例题)

所谓递归,就是逐层求解母问题的子问题。重点是设置递归边界递归式。

简单举个栗子(即经典例题的第一道):

求f(n) = 1+2+3+4+5+6+7+....n;

子问题是求解f(n - 1), 即f(n) = n + f(n - 1)

同理f(n - 1) = n - 1 + f(n - 2)

....

....

那么问题来了:什么时候停止呢?

由题意可知自变量是不断减小的,总不能无限制的减小吧,根据题意,n的最小值是1,易只f(1) = 1

那么n = 1就是边界

我们可以另n = 3验证一下:

先根据递归式写出所有表达式(这里是为了使问题更明了,事实上只要清楚思路不用写的)

f(3) = 3 + f(3 - 1) = 3 + f(2)

f(2) = 2 + f(1)

f(1) = 1;

等到达边界后,再逐层向上求解:

f(1) = 1;

f(2) = 2 + f(1) = 2 + 1 = 3;

f(3) = 3 + f(2) = 3 + 3 = 6;

因此f(3)的结果就是6

//总结:递归的代码一般不是很长,而且很多复杂的大问题都可以用递归来实现,但是可能思考起来比较绕,希望读者能仔细思考递归的过程。(提醒:递归层数不要太多,否则会爆栈!!!)

//好了,理论知识说完了,几道简单题(保证不难)练练手吧

猜你喜欢

转载自blog.csdn.net/qq_45472866/article/details/105257707