我正在使用 Python 使用以下公式創(chuàng)建斐波那契數(shù)列:我有這個遞歸斐波那契函數(shù):def recursive_fibonacci(n):if n <= 1: return int((((1 / (5 ** 0.5)) * (1 + (5 ** 0.5))) ** n) - (((1 / (5 ** 0.5)) * (1 - (5 ** 0.5))) ** n))else: return(recursive_fibonacci(n - 1) + recursive_fibonacci(n - 2))為了顯示它,我正在使用它:nterms = 10if nterms <= 0: print("Please Enter a positive integer")else: print("Recursive Fibonacci Sequence: " , [recursive_fibonacci(i) for i in range(nterms)]) print("Iterative Fibonacci Sequence: " , [iterative_fib(i) for i in range(nterms)])我將如何使用這個斐波那契的迭代函數(shù)?我試過用這個:def iterative_fib(n): equation = lambda n: int((((1 / (5 ** 0.5)) * (1 + (5 ** 0.5))) ** n) - (((1 / (5 ** 0.5)) * (1 - (5 ** 0.5))) ** n)) if n <= 1: return equation(n) else: a, b = 1, 2 for i in range(n): fn = equation((i-a)+(i-b)) return fn然而,這個迭代函數(shù)似乎沒有與遞歸函數(shù)相同的輸出。遞歸函數(shù)的輸出:Recursive Fibonacci Sequence: [0, 2, 2, 4, 6, 10, 16, 26, 42, 68]迭代函數(shù)的輸出:Iterative Fibonacci Sequence: [0, 2, 2, 2, 3, 6, 13, 27, 58, 122]
2 回答

四季花海
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個贊
我認(rèn)為您誤解了您提到的斐波那契數(shù)列的表達(dá)式 f_n。
請注意,它不是遞推關(guān)系。它是n的函數(shù),即,當(dāng)給定n時,它提供第n項(xiàng)的值。
因此,您真的沒有遞歸/迭代解決方案來生成整個斐波那契數(shù)列。
將n 代入為 0, 1, 2, 3.. 提供該系列的項(xiàng) 0, 1, 1, 2, ..。
為了說明,當(dāng)n = 3 時, f_3 計(jì)算為 -
添加回答
舉報
0/150
提交
取消