遞迴及練習

2022-08-11 17:30:22 字數 1530 閱讀 8765

分析:遞迴的思想,舉個例子吧!!!電影院看電影院,當你去晚了,然後從最後一排問,你是第幾排,一直問到第一排,然後第一排的人又以相同的方式傳回來,重複做相同的工作,先去傳遞「你是第幾排」這個問題,然後回歸給自己「我是第幾排」,得到結果。自己呼叫自己,會出現無限迴圈的問題(死迴圈),所以必須有跳出,結束條件,才能有結果。

先傳遞,後回歸。必須有跳出才有結果。自己呼叫自己。

找規律

eg:用遞迴算階乘   5的階乘   1 * 2 * 3 * 4 * 5

分析:5!  ==     5    *     4!

​4!  ==     4    *     3!

​3!  ==     3    *     2!

​2!  ==     2    *     1!​​

fn(5);

return 5 * fn(4);

​fn(4)

return 4 * fn(3)

​fn(3)

return 3 * fn(2)

​fn(2)

return 2 * fn(1)

​......

​//實現

function fn(n)

console.log(fn(5));

1.利用遞迴求1-100的和

//分析

// 100 + fn(99);

// 99 + fn(98);

​//實現

function sum(n)

console.log(sum(5));

2.兔子 3個月成年  ——>  繁殖

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987

//分析:

fn(n) = fn(n-1) + fn(n-2);

​fn(10) = fn(9) + fn(8);

fn(9) = fn(8) + fn(7);

fn(8) = fn(7) + fn(6);

....

​function fn(n)

return fn(n-1) + fn(n-2);

}console.log(fn(8));

3.求最大公約數(輾轉相除法(計算過程為:兩個數相除得到餘數,餘數不為0時,讓兩個數中的最小數與餘數在相除,直到餘數為0時,那個最小數就為它們的最大公約數))

function fn(m,n)else

}console.log(fn(16,8));

4.編寫乙個函式,輸入n為偶數時,呼叫函式求1/2+1/4+...+1/n,當輸入n為奇數時,呼叫函式求/1+1/3+...+1/n

分析:

10    1 / 10 + 1 / 8 + 1 / 6

11    1 / 11 + 1/ 9 + 1 / 7....

規律:1 / n + fn(n - 2);

實現:function fn(n)

return 1 / n + fn(n-2);

}console.log(fn(10));

基礎 遞迴練習

1 有乙個農場在第一年的時候買了一頭剛出生牛,這頭牛在第四年的時候就能生一頭小牛,以後每年這頭牛就會生一頭小牛。這些小牛成長到第四牛又會生小牛,以後每年同樣會生一頭牛,假設牛不死,如此反覆。請問50年後,這個農場會有多少頭牛?首先定義最終終止條件f 4 1 然後定義遞迴公式中f n f n 1 f ...

遞迴練習答案

演算法 4.1 4.2 4.3 請編寫前述sum函式的 def sum list if list return 0 return list 0 sum list 1 print sum 4,5,6,7 編寫乙個遞迴函式來計算列表包含的元素數 def count list if list return...

python遞迴練習

1 漢諾塔問題 複雜度 f n f n 1 1 f n 1 n層 2 n 1步def func n,fromm,to,help if n 1 print move str 1 from fromm to to base case else func n 1,fromm,help,to 將n 1層從f...