演算法 斐波拉契數列多種實現方法

2021-09-02 04:16:39 字數 785 閱讀 9058

斐波拉契數列:1,1,2,3,5,8,13,21,34,55,89,144。。。

以下程式預設數列從1開始,不考慮引數為0情況。若儲存以前值可以用列表儲存

常規寫法

def

fib(num)

: i =

2 n,m =1,

1while ii+=

1 n,m = m,m+n

return m

遞迴寫法 此方法看看就好,bie yong

def

fib(num)

:if num<2:

return

1else

:return fib(num-1)

+fib(num-

2)

裝飾器寫法 速度要快於常規寫法(快很多倍)

def

memo

(func)

: cache =

defwrap

(*args)

:if args not

in cache:

cache[args]

= func(

*args)

return cache[args]

return wrap

@ memo

deffib

(i):

if i <2:

return

1return fib(i-1)

+ fib(i-

2)

斐波拉契數列 演算法

斐波那契數列是一組第一位f1和第二位f2為1,從第三位開始,後一位是前兩位和的一組遞增數列fn fn 1 fn 2。那麼當n比較大時,fn也非常大,現在我們想知道,第n項,fn等於多少 如 輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,包含乙個整數,表示fn。樣例輸入10此時fibonacc 樣...

斐波拉契數列

斐波拉契數列 1 1 2 3 5 8 13 21 34.其中每乙個數字都是前兩個數字的和。遞迴計算 long fibonacci int n 非遞迴計算 long fibonacci int n return result 這個函式的遞迴實現使用了雙重遞迴 double recursion 函式對本...

斐波拉契數列

編寫彙編程序列印1 1000的斐波拉契數列 原始碼assume cs code,ss stack,ds data data segment fibo dw 0,1,64 dup 0 str db the fibo list is 0ah,0dh,data ends stack segment db ...