Java-方法的递归操作

思维导图软件到期了....感觉不爽.....

所谓递归(recursion)操作就是让方法自己调用自己.

下面举两个简单的例子说明.

一. 斐波那契数列.

斐波纳契数列,其通项公式为:F(0)=0,F(1)=1,Fn=F(n-1) +F(n-2)(n>=3,n∈N*),现在求F(5)的值,怎么做呢?

观察:这个数列从第三项开始,每一项都等于前两项之和。
要求F(5)的值,肯定要先求F(4)和F(3)的值,而求F(4)的值又需要求F(3)和F(2)的值... ...
解决办法1:
依次求出F(1)、F(2)、F(3)、F(4)值,再处理,如下图所示:

Java-方法的递归操作

这种办法很笨,效率低极低。

Java-方法的递归操作
方法fn的作用就是求num数的函数值,而求函数值又需要num-1和num-2的函数值,而这两个函数值的求法和求num一样,那么也就可以使用同一个方法。

二.N次汉诺塔,需要移动几次?

Java-方法的递归操作

由上图可知:

层数(n) 移动次数
0 0
1 (1-1)的次数*2+1
2 (2-1)的次数*2+1
3 (3-1)的次数*2+1
4 (4-1)的次数*2+1
代码如下:

Java-方法的递归操作

没有思维导图就是乱....