叠代法:從1到100,向下累加。1+2=3,3+3=6,6+4=10,10+5=15……
程序說,
int i=1,sum = 0;
while(我& lt=100){
sum = sum+I;
}
遞歸練習:我要求累計值從1到100。如果我已經得到了從1到99的累計值,那麽將這個值加到100上就得到從1到100的累計值。要獲得1到99的累積值,如果已經獲得1到98的累積值,則將99加到這個值上,這就是1到99的累積值...最後想得到1到2的累計值。如果我得到的累計值是1,我可以加2,1就夠了。所以現在我們得到1到2的累計值,把這個值加到3得到1到3的累計值,…最後得到1到100的累計值。
程序表示是遞歸方法的壹個典型特征,在程序表示中,函數調用自身。
int GetSum(int n)
{
如果(n & lt=0)返回0;
else返回n+GetSum(n-1);
}
在上面的例子中,實際上遞歸的最終結果也是用叠代法完成的,只是在程序的處理中並不直接可見。兩者都能很好地完成計算任務,區別在於思維方式,導致計算方法不同:叠代是正向思維,從頭到尾思考問題;遞歸是逆向思維。他假設我們已經得到了壹些結果(假設我已經知道了1到99的累計值,把這個值加到100上,我們得到了1到100的累計值),從尾部壹直追溯到頭部,從而簡化了問題(當然這個例子並不明顯,這裏只是為了便於理解,有興趣可以參考壹下)。