遞迴的理解

2021-08-02 01:25:22 字數 796 閱讀 2542

都說遞迴的是神,迭代的是人,這個就是學習筆記,記一下我的一些理解

hi

t2015sp

ring

晨鳧追風

理解方式1

1、當n=0

,1時,結果正確

2、假設函式對於

n 是正確的,函式對於n+

1結果也是正確的,如果這兩點是成立的,這個函式對於所有可能的

n 也是成立的

像是數學歸納法的理解

理解方式2

把規模大的問題分解為規模小的問題,大問題的解決方法,和小問題的解決方法是同乙個方法,然後又明顯的結束條件。

理解方式3

規模大的問題變成乙個小問題+在此基礎上的乙個剩餘的解決方法,自己解決

遞(去)——>歸(來)

1有去無回的方式:去:分解問題的路上解決問題

2有去有回的方式:去:分解問題,回:解決問題

例子:斐波那契數列,漢諾塔,階乘問題

階乘:

int factorial(int n)

斐波那契數列

int fibonacci(int n)
漢諾塔問題

void hanoi (int n, char a, char b, char c)

else

}

1、 如何解決問題的一般情況,通過將問題切分成有限小,並更小的問題

2、如何通過有限的步驟解決最小的問題(基本的問題)

遞迴的理解

對於遞迴問題,一定要明確的一點是,初始呼叫該函式時的輸入是什麼樣的 遞迴能夠奏效的前提是,問題的規模一定是減少的,或者更為嚴謹地說,問題一定是朝著遞迴結束的條件執行的 遞迴函式的第乙個要執行的就是 if 判斷,也即每進入一次遞迴,都要首先判斷是否到達遞迴的結束,n 0 其次還要明晰遞迴函式的功能,是...

遞迴的理解

本篇文章只要是實現最大公倍數的遞迴實現方法。最大公倍數是指兩個數能夠被一組數同時整除,其中最大的那個數就叫做最大公倍數,求解最大公倍數這裡主要說兩個想法,其實就是將複雜的問題簡化逐步簡化到乙個很小的問題,然後求得答案。假設有兩個數 252和105 252 21 12 105 21 5 252 105...

遞迴的理解

先考慮第一步,在考慮第二步,第二步可能與第一部的解法思路相同,範圍卻小了 然後一直分解。直到邊界有返回值 特例 下面是個關於遞迴呼叫簡單但是很能說明問題的例子 cpp view plain copy 遞迴例子 include void up and down int int main void vo...