Python遞迴學習2 斐波那契數列極其應用

2021-09-28 11:25:41 字數 937 閱讀 1702

斐波那契數列是這樣的一組數,第一項和第二項是1,後面的數都是前面倆數的和。

這裡和猴子吃桃的問題不太一樣,可能從後往前想跟可以得到結果。比如想第10個數,我要是想知道第十個的數我就要知道第九個和第八個的數,想要知道第九個,第八個的數······ ,顯然一直在做著重複的過程,遞迴**來了

def fibonacci(n):

"""實現斐波那契數列

:param n: 第幾項

:return: 第n項的數值

"""if n == 1:

return 1

elif n == 2:

return 1

else:

return fibonacci(n-1) + fibonacci(n-2)

問題描述:

工人上台階問題

乙個工人可以一次上乙個台階,也可以一次上兩個台階。問如果他上到第n個階,有多少種上法。分析

從前往後分析吧,分析的過程一定要靈活!上第乙個台階的時候有乙個上法,上第二個台階的時候有兩個演算法,到第三個台階的時候,我們知道從第二個台階到第三個台階,和從第乙個台階到第三個台階都只有一種方法。所以只要把上到第二個台階的方法數加上上到第乙個台階的方法數就是上到第三個台階方法數了!。同理第四個台階的方法數等於第三個台階的方法數加上第二個台階的方法數。遞迴**又來了!

def get_step(n):

"""上台階

:param n: 要上的台階數

:return: 方法的總數

"""if n == 1:

return 1

elif n == 2:

return 2

else:

return get_step(n-1) + get_step(n-2)

python 遞迴 斐波那契

什麼是遞迴演算法?函式自己呼叫自己本身 本質上return返回的時候,總是把乙個引數傳入到自己函式本身,讓函式反覆呼叫下去 遞迴有何特點?必有乙個結束條件 沒有結束條件,遞迴就沒有任何意義,python中預設只能999層遞迴 遞迴過多棧溢位,報錯 效率不高 相對而言,對於正向遞迴,遞迴次數和迴圈次數...

遞迴 斐波那契

題 若一頭小母牛,從出生起第四個年頭開始每年生一頭母牛,按此規律,第n年有多少頭母牛?具體分析 1 分析題目 從出生起第四個年頭開始每年生一頭母牛 時間 年 未成熟母牛 頭 成熟母牛 頭 母牛總數 頭 1 1 0 1 2 1 0 1 3 1 0 1 4 0 1 1 5 1 1 2 6 2 1 3 7...

斐波那契遞迴

const fib1 n if n 0 else if n 1 else console.log fib1 5 函式呼叫順序 fib1 5 fib1 4 fib1 3 fib1 2 fib1 1 fib1 0 fib1 1 fib1 2 fib1 1 fib1 0 fib1 3 fib1 2 fib...