黑马程序员技术交流社区

标题: java递归算法实例小结 [打印本页]

作者: bestcaptain    时间: 2016-2-25 22:32
标题: java递归算法实例小结

一、递归算法设计的基本思想是:

        对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。

      在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。

关键要抓住的是:
(1)递归出口

(2)地推逐步向出口逼近

二、递归算法实例

(1)阶乘:

          要求:给定一个数值,计算出它的阶乘值,例如5的阶乘为5*4*3*2*1

          实现:

(2)Fibonacci数列:1,1,2,3,5,8,13……

           要求:找出数列中指定index位置的数值

           实现:

(3)汉诺塔

          要求:汉诺塔挪动

          实现:

(4)排列组合

          要求:将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是"abc",

                      则程序会输出

                      abc
                      acb
                      bac
                      bca
                      cab
                      cba

          实现:




总结递归算法来说,这个根就是那个出口,只要找到这个出口所在,那么算法自然而然就能水到渠成了。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2