迭代
迭代法也就是輾轉(zhuǎn)法
規(guī)律:就是可以不斷地用舊的值得到新的值蠕搜,直到我們想要的得到的結(jié)果怎茫。
遇到了迭代的問題怎么解決
找到迭代的變量(舊的值)
確定迭代的關(guān)系
知道想要的結(jié)果是什么(結(jié)束循環(huán)的條件)
(1) 就是知道最終結(jié)果
(2) 循環(huán)的次數(shù)
<script>
/*
* 1.接受用戶輸入的倆個數(shù)
* 2.一個函數(shù)的到最大公約數(shù)
* 3.打印這個最大公約數(shù)*/
varnum1 = Number(prompt("請輸入一個數(shù)"));
var num2 = Number(prompt("請輸入一個數(shù)"));
var result = GCD(num1,num2);
alert(result);
/*
* 函數(shù)的功能:得到最大公約數(shù)
* 函數(shù)名:GCD
* 函數(shù)的參數(shù):倆個整數(shù)
* 返回值:最大公約數(shù)*/
/*
* 如果num1<num2則交換,確保num1是交大的
* 計算余數(shù)
* 當(dāng)num1(除數(shù))妓灌,對num2(被除數(shù))的余數(shù)不為0轨蛤,重復(fù)一下步驟
* num2=>num1,
* 余數(shù)=>num2
* 重新計算余數(shù)
* 最終的到最大公約數(shù),也就是num2的值*/
functionGCD(num1,num2){
/*return0;*/
if(num1<num2){
var t = num1;
num1=num2;
num2 = t;
}
var remainder = num1%num2;
while(remainder!= 0){
num1=num2;
num2= remainder;
remainder=num1%num2;
}
returnnum2;
}
</script>
遞歸
所謂遞歸虫埂,就是在函數(shù)內(nèi)部又去調(diào)用自己祥山。
例如,求階乘問題掉伏,在fact函數(shù)內(nèi)部又去調(diào)用fact函數(shù)了
<script>
/*計算n的階乘*/
functionfact(n){
if(1== n){
return1
}
returnn*fact(n-1);
}
alert(fact(5));
</script>
遞歸算法如果按照常規(guī)思路去理解是非常復(fù)雜的缝呕,函數(shù)調(diào)用一層一層嵌套調(diào)用疹启,然后又一層一層返回鲜滩,不妨換個思路去理解遞歸。
遞歸實際上就是將規(guī)模為n的問題降價為n-1的問題進行求解偿枕。也就是去找n和n-1之間的關(guān)系鸡捐。