面試題9 斐波那契數列

2021-07-11 08:20:49 字數 760 閱讀 8222

書中說遞迴法比迴圈法更慢,實測速度差不多一樣,不知道怎麼回事。

很簡單,直接上**吧:

# coding:utf-8

# 遞迴計算斐波那契數列

def fibonaccirecursion(n):

if n < 0:

return false

elif n == 0:

return 0

else:

fibonaccin = fibonacci(n-1) +fibonacci(n-2)

return fibonaccin

# 迴圈計算斐波那契數列(相比遞迴更加高效)

def fibonacci(n):

num1 = 0; num2 = 1

if n < 0:

return false

elif n == 0:

return 0

elif n == 1:

return 0

else:

i = 2

while i <= n:

numi = num1 + num2

num1 = num2

num2 = numi

i += 1

return numi

n = int(raw_input('請輸入第幾個斐波那契數:'))

print fibonaccirecursion(n-1)

print fibonacci(n-1)

面試題9 斐波那契數列

方法一 很容易想到的解法是直接使用遞迴。c include stdafx.h include using namespace std long long fibonacci unsigned int n if n 1 return fibonacci n 1 fibonacci n 2 int tm...

面試題9 斐波那契數列

題目一 寫乙個函式,輸入n,求斐波那契數列的第n項,斐波那契數列的定義如下 0 n 0 f n 1 n 1 f n 1 f n 2 n 1 遞迴 long long fibonacci unsigned int n if n 0 n 1 return n return fibonacci n 1 f...

面試題9 斐波那契數列

面試題9 題目 寫乙個函式,輸入n,求斐波那契數列的第n項。很多教科書中的解法 long long fibonacci solution1 unsigned int n 這是從第n項向前計算的方法,很多計算量實際上是重複的。long long fibonacci solution2 unsigned...