演算法題 遞迴

2021-08-06 03:56:30 字數 2241 閱讀 7976

1.遞迴求和1+2+3+…..+n

思想:f(1) = 1

f(2) = f(1)+2

f(3) = f(2)+3

. .

. f(n) = f(n-1)+n

def

add(n):

if n==1:

return

1else:

return(add(n-1)+n)

print(add(100))

結果:5050

2.遞迴求n! = n * (n-1) * (n-2) * …* 1(n>0)

f(1) = 1

f(2) = 1*2

f(3) = 1*2 *3

. .

. f(n) = f(n-1)*n

3.斐波納契數列,又稱**分割數列,指的是這樣乙個數列:1、1、2、3、5、8、13、21、……

f(1)= 1

f(2) = 1

f(3) = f(1)+f(2)

. .

. f(n) = f(n-1)+f(n-2)

def

fibo

(n):

if n==1

or n==2:

return

1else:

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

print(fibo(8))

4.兔子問題:一般而言,兔子在出生兩個月後,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔子都不死,那麼一年以後可以繁殖多少對兔子?

第乙個月後,一對新兔子變老兔子

n = 1 —》 1(老兔子)

第二個月後,老兔子變老兔子,並且生下一對新兔子

n = 2 —》 1(老兔子)+ 1(新兔子)

第三個月後,老兔子變老兔子,並且生下一對新兔子,上個月的新兔子也變成老兔子

n = 3 —》 1(老兔子) + 1(新兔子)+ 1(老兔子)

。。。。。。

n = 4 1(老) 1(新) 1(老) 1(老) 1(新)

. .

1,2,3,5,8,13,21……

類似於菲波那切數列

5.漢諾塔問題:漢諾塔問題是乙個經典的問題。漢諾塔(hanoi tower),又稱河內塔,源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,任何時候,在小圓盤上都不能放大圓盤,且在三根柱子之間一次只能移動乙個圓盤。問應該如何操作?

思路:a中有n個盤子,要移動到c中

1.將a上方n-1個盤子,借助c移動到b

2.將a中第n個盤子從a移動到c

3.將b中n-1個盤子借助a移動到c

找到hano的數學表示式,其中,n-1,a,b,c為其引數。漢諾塔中有遞迴和迭代。

遞迴演算法簡單題

最大公約數 題目內容 輸入兩個整數m,n,用遞迴演算法實現計算兩個數的最大公約數。輸入格式 輸入兩個整數m,n 輸出格式 最大公約數 輸入樣例 12,40 回車 輸出樣例 4 回車 時間限制 500ms記憶體限制 32000kb 理解最大公約數演算法!include int n intm void ...

遞迴演算法題歸納

例一 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 經典的遞迴應用,注意考慮周全,當傳入的n的值為0或者為1的時候,返回的數值是多少 public class solution public class solution else 例三...

面試必考07 遞迴演算法題總結

遞迴和非遞迴方法都要掌握 1.斐波那契數列 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 public class test07 int num1 0 int num2 1 while n 0 return num1 遞迴寫法 publ...