递归算法
递归算法
递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的那样一种coding策略,这样我们就可以利用大道至简的思想,把一个大的复杂的问题层层转换为一个小的和原问题相似的问题来求解的这样一种策略。这样我们就能看到我们会用很少的语句解决了非常大的问题,所以递归策略的最主要体现就是小的代码量解决了非常复杂的问题。
做过树形结构的都知道,我们有时候遇到的树是无限级别的树,这样我们就必须要利用循环和递归算法来实现无限级别的树。
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
下面用一个java的实例来实现一下递归算法。
问题:求斐波那契数列的第四十个数的值?
实例代码:
1 public classFab { 2 3 public static void main(String args[]){ 4 System.out.println(fab(6)); 5 } 6 7 private static int fab(int index){ 8 if(index==1 || index==2){ //递归算法的出口 9 return 1; 10 }else{ 11 return fab(index-1)+fab(index-2); 12 } 13 } 14 }
运行结果:8
当index满足条件的时候就会结束递归,该方法的运行流程如下:
递归算法的重点就在于找到程序的出口所在。