遞歸和迭代

首先迭代就是用舊值不斷產(chǎn)生新值的過程:

int sum(int n )
{
    int sum =0;
    for(int i = 1 ; i <= n;i++) sum+=n;//求解1~n的和
    return sum;
}

從上述例子中,從1一直加到n,每一次的和都是在上一次的和上加上n,因此,我們不難理解,所謂迭代法(輾轉(zhuǎn)法),就是一種不斷用變量的舊值遞推新值的過程。
迭代的過程分為3步:
1、確定迭代變量,如上面所示的變量sum
2、確定迭代關(guān)系式
3、確定迭代終止的條件
遞歸

int sum(int n )
{
    if(n==1) return 1;
    else return n+sum(n-1);
}

遞歸就是在函數(shù)內(nèi)部不斷調(diào)用自身
同樣是求0n的和,這段代碼是每次在函數(shù)體中調(diào)用自身函數(shù),1n的和可以拆分成兩個部分,1~n-1的和加上n,因此,遞歸的思想就是:在函數(shù)或子過程的內(nèi)部,直接或者間接地調(diào)用自己的算法,從而把問題轉(zhuǎn)化為規(guī)模縮小了的同類問題的子問題。
遞歸也需要終止條件
遞歸的過程:
1、確定遞歸的表達式
2、確定遞歸出口,終止條件
迭代是一個正向思考的過程,遞歸像是一個由大到小的過程。
用遞歸還是迭代?
顯然遞歸如果寫成代碼,會比較簡潔,但是遞歸的深度過大,會導(dǎo)致堆棧溢出,迭代雖然可讀性可能不如遞歸但是它的執(zhí)行效率高,正比于循環(huán)次數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容