遞迴 遞迴演算法的非遞迴優化

2022-10-09 09:09:10 字數 699 閱讀 2822

一:遞迴

在方法內部呼叫自身方法的過程稱為遞迴,下面給出乙個遞迴方法的示例。

class program

//使用遞迴,實現求前n項和

public static int getsum(int n)

int result = getsum(n - 1); //在方法體中呼叫方法本身

return result + n;

}}

需要注意的是,遞迴方法需要有結束遞迴的條件,如果不加條件,就會陷入無限遞迴的狀態;

二:遞迴演算法的非遞迴優化

在上面示例中,我們用遞迴實現的求數列前n項和,那麼我們下面試試,不用遞迴來實現求數列前n項和。

class program

// 非遞迴,實現求前n項和

public static int getsum2(int n)

return result + n;

}//使用遞迴,實現求前n項和

public static int getsum(int n)

int result = getsum(n - 1);

return result + n;

}}

在上面的示例中,我們可以看到,不適用遞迴演算法時,我們使用的是迴圈結構;所以對於部分遞迴演算法的非遞迴優化,使用迴圈結構是一種解決辦法!

遞迴與非遞迴演算法

一 題目分析 將非負十進位制整n轉換成b進製 其中b 2 16 將任意正整數n用2的冪次方表示 二 演算法設計 1 轉換進製問題 exer.cpp 遞迴演算法 遞迴出口 n b b 遞迴表示式 f n,b f n b,b n b b 遞迴棧表示 2 用二的冪次方表示任意正整數n問題 exer2.cp...

遞迴 非遞迴

遞迴演算法實際上是一種分而治之的方法,它把複雜問題分解為簡單問題來求解。對於某些複雜問題 例如 hanio塔問題 遞迴演算法是一種自然且合乎邏輯的解決問題的方式,但是遞迴演算法的執行效率通常比較差。因此 在求解某些問題時,常採用遞迴演算法來分析問題,用非遞迴演算法來求解問題 另外,有些程式語言不支援...

遞迴 從台階問題學習遞迴 遞迴優化和非遞迴

遞迴就是將大問題劃分為若干個子問題,各個問題是巢狀關係,最小的那個問題的結果是已知的,大問題不斷分解直到達到最小問題的過程叫做 遞 小問題的解釋已知的,然後根據這個解回過去求大問題的解的過程叫做 歸 最簡單的遞迴的例子就是求n的階乘 其遞推公式為 f n n f n 1 其中,f 1 1 遞迴需要滿...