劍指offer 遞迴與迴圈

2021-09-12 21:00:58 字數 1169 閱讀 1031

題目描述:大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。

詳細**:

# -*- coding:utf-8 -*-

class solution:

def fibonacci(self, n):

# write code here

if n <= 0:

return 0

if n == 1:

return 1

small = 0

big = 1

for i in range(2, n+1):

sum_i = small + big

small = big

big = sum_i

return big

覆蓋矩形:我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋乙個2*n的大矩形,總共有多少種方法?

詳細**:

# -*- coding:utf-8 -*-

class solution:

def rectcover(self, number):

# write code here

if number <= 0:

return 0

if number == 1:

return 1

if number == 2:

return 2

small, big = 1, 2

for i in range(3, number + 1):

sum_i = small + big

small = big

big = sum_i

return big

解題思路:數學歸納法,一共有2n−

12^

2n−1

種方法詳細**:

# -*- coding:utf-8 -*-

class solution:

def jumpfloorii(self, number):

# write code here

if number <= 0:

return 0

return 2**(number - 1)

劍指offer 遞迴與迴圈

寫乙個函式,輸入n,求fibonacci數列的第n 項。一般我們在求fibonacci數列的時候,可能會使用遞迴,但其實遞迴是乙個效率很低的解法。public int fibonacci int n if n 2 return fibonacci n 1 fibonacci n 2 例如在求f 10...

劍指offer 迴圈遞迴

class solution return res 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。class solution return res 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法...

劍指offer 遞迴和迴圈

遞迴雖然比較簡潔,但他同時也有顯著的缺點。遞迴由於是函式呼叫自身,而函式呼叫是有時間和空間的消耗的,每一次函式呼叫都需要在記憶體棧中分配空間以儲存引數 返回位址及臨時變數,而且往棧裡壓入資料和彈出資料都需要時間。1 斐波那契數列 0,1,1,2,3,5,8,13 遞迴 缺陷 重複計算的太多 int ...