遞迴的理解

2021-07-25 08:00:26 字數 986 閱讀 3267

本篇文章只要是實現最大公倍數的遞迴實現方法。

最大公倍數是指兩個數能夠被一組數同時整除,其中最大的那個數就叫做最大公倍數,求解最大公倍數這裡主要說兩個想法,其實就是將複雜的問題簡化逐步簡化到乙個很小的問題,然後求得答案。

假設有兩個數 252和105

252 :21*12

105 : 21 * 5

252 - 105 = 147  = 21 * 7

兩個數相減後他的最大公倍數是不變的,所以,可以用這種方法一直遞減來實現演算法

除法和遞減的性質其實是一樣的

#include "stdafx.h"

//輾轉相減法

int max_yinshu1(int a , int b)

tempc = tempa - tempb;

printf("tempa = %d; tempb = %d; tempc = %d\n" , tempa , tempb , tempc);

tempa = tempc;

}return tempb;

}//輾轉相除法

int max_yinshu2(int a , int b)

tempc = tempa % tempb;

printf("tempa = %d; tempb = %d; tempc = %d\n" , tempa , tempb , tempc);

tempa = tempc;

}*/while(tempb != 0)

return tempa;

}//遞迴法

int max_yinshu3(int a , int b)

}int _tmain(int argc, _tchar* argv)

return 0;

}

結果如下所示 :

遞迴的理解

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

遞迴的理解

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

遞迴的理解

都說遞迴的是神,迭代的是人,這個就是學習筆記,記一下我的一些理解 hi t2015sp ring 晨鳧追風 理解方式1 1 當n 0 1時,結果正確 2 假設函式對於 n 是正確的,函式對於n 1結果也是正確的,如果這兩點是成立的,這個函式對於所有可能的 n 也是成立的 像是數學歸納法的理解 理解方...