Recursion递归

递归的本质是将原本复杂的问题转换为一个与原问题相似的更小规模的问题来求解。其实本质就像爬山,我们一步一步从山脚爬到山顶,又从山顶走到山脚。

递归有三个条件:

边界条件。

前进段(回推阶段)。

返回段(递推阶段)。

当边界条件不满足时,继续前进也就是回推,当边界条件满足时,递归返回也就是递推阶段。

大致求解过程如下所示:

1.计算5的阶乘(三元表达式):

思路:因为计算5的阶乘实际上就是计算5*4*3*2*1,其实可以把求解过程简化为:5*4=20;然后再调用相同的函数test01就是20*3(5*4*3),然后再调用test01就是60*2(5*4*3*2),最后再次调用也就是120*1(5*4*3*2*1),因为当i==1时条件就终止,i其实是我们传入的值也就是5,因为要计算5的阶乘。

此题中,按照递归的三个条件来分析:

(1)边界条件:阶乘,乘到最后一个数,即1的时候,返回1,程序执行到底;
(2)递归前进段:当前的参数不等于1的时候,继续调用自身;
(3)递归返回段:从最大的数开始乘,如果当前参数是5,那么就是5*4,即5*(5-1),即n*(n-1)

 2.求数列:1,1,2,3,5,8......第40位的数,思路和第一种情况也是一样的。

参考:https://www.cnblogs.com/xiaosen992608/p/4037682.html

https://ke.qq.com/course/333792?taid=2445489954166752(腾讯课堂,可以更方便你理解)

 源码:https://git.dev.tencent.com/javazyh/JavaBasicStudy.git

原文地址:https://www.cnblogs.com/javazyh/p/10825400.html