Golang-遞歸


函數的遞歸調用

  基本介紹

    一個函數在函數體內又調用了本身,我們稱為遞歸調

  遞歸調用快速入門

    

    上面代碼的分析圖:

    

 

    代碼2

    

 

 

     對上面代碼分析的示意圖:

    

  遞歸調用的總結
    函數遞歸需要遵守的重要原則:

    1)執行一個函數時,就創建一個新的受保護的獨立空間(新函數棧)
    2)函數的局部變量是獨立的,不會相互影響
    3)遞歸必須向退出遞歸的條件逼近,否則就是無限遞歸,死龜了:)
    4)當一個函數執行完畢,或者遇到 return,就會返回,遵守誰調用,就將結果返回給誰,同時當函數執行完畢或者返回時,該函數本身也會被系統銷毀

  遞歸課堂練習題

    題 1:斐波那契數
      請使用遞歸的方式,求出斐波那契數 1,1,2,3,5,8,13...
      給你一個整數 n,求出它的斐波那契數是多少?

      思路:
       1) 當 n == 1 || n ==2 , 返 回 1
       2) 當 n >= 2, 返回 前面兩個數的和 f(n-1) + f(n-2)
      代碼:

       

    題 2:求函數值
      已 知 f(1)=3; f(n) = 2*f(n-1)+1;
      請使用遞歸的思想編程,求出 f(n)的值?
      思路:

      直接使用給出的表達式即可完成代碼:

      

 

     

    題 3:猴子吃桃子問題
    有一堆桃子,猴子第一天吃了其中的一半,並再多吃了一個!以后每天猴子都吃其中的一半,然后再多吃一個。當到第十天時,想再吃時(還沒吃),發現只有 1 個桃子了。問題:最初共多少個桃子?
    思路分析:
      1)第 10 天只有一個桃子
      2)第 9 天有幾個桃子 = (第 10 天桃子數量 + 1) * 2
      3)規律: 第 n 天的桃子數據 peach(n) = (peach(n+1) + 1) * 2
      代碼:

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM