函數的遞歸調用
基本介紹
一個函數在函數體內又調用了本身,我們稱為遞歸調
遞歸調用快速入門

上面代碼的分析圖:

代碼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
代碼:

