• 递归算法


    递归算法

      递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的那样一种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满足条件的时候就会结束递归,该方法的运行流程如下:

    流程图

    递归算法的重点就在于找到程序的出口所在。

  • 相关阅读:
    内存中的堆和栈
    数据库——关系型数据库
    如何创建一个进程,如何进程调用进程
    浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析(好戏在后面,有图有真相)
    Moon.Orm 5.0(MQL版)使用指南
    初学 快速幂 的理解
    2016 杭电
    2015 偶数求和 AC 杭电
    2014 青年歌手大赛 AC
    C语言初学 数组 打印菱形
  • 原文地址:https://www.cnblogs.com/xcggdd/p/6045836.html
Copyright © 2020-2023  润新知