1. 程式人生 > >【演算法】迭代和遞迴

【演算法】迭代和遞迴

在日常程式的編寫中,複雜的專案日益增多,在後期的程式碼優化上需要花更多的時間和精力。在前期的規劃上也越來越重要,前期良好的規劃可以避免後期遇到些奇怪的問題。

這次部落格我希望通過講解下迭代和遞迴的具體應用場景,來表達寫程式是前期規劃的作用和解決具體問題所需要的方法。

遞迴和迭代,都是一種迴圈演算法。遞迴在迴圈的過程中,會將這次的結果返回到上次迴圈中,直到最後滿足遞迴的條件。迭代類似於普通的迴圈,只是迭代的結果還是被用在迴圈之中。

遞迴的案例:階乘:  n! = n * (n-1) * (n-2) * ...* 1(n>0)

int recursive(int i)
{
 int sum = 0;


if (0 == i)
return (1);
else
sum = i * recursive(i-1);
return sum;
}
}

sum作為一個值,會在迭代中一直被使用,知道運算到最後的i=1的時候的值,然後在將這些值返回到上一次的迭代中,最後一層一層返回到最後所需要求的值。
還有些看上去很難的問題,比如說漢諾塔問題。但是使用遞迴,就可以很簡單的實現。
迭代的案例:在最優化問題上的取最小值點的問題:在這次取的點的結果中,去計算下一次的點,知道誤差小於一定的值的時候,結束迭代。
遞迴和迭代是解決問題的2種方法,遞迴知到最後的條件,去重最簡單的慢慢的往下推算,再返回到最開始的條件。迭代是知道你需要做到什麼樣的情況,然後選擇對應的過程,去實現最後的條件。
在解決具體的問題中,選擇不同的演算法,節省時間,提高效率。


by:zxy