控制遞迴的次數

2021-10-24 12:14:41 字數 972 閱讀 7946

經常會用到遞迴,雖然能解決很多問題,但其缺點很明顯,有可能無法跳出造成死迴圈,能控制遞迴次數就可以避免這種情況。

用lua嘗試了幾種方法,第一種,在方法內定義乙個變數計數:

function recursiontest()

local times = 0

if times < 10 then

times = times + 1

recursiontest()

endif times == 0 then

print("outer round")

endend

執行下來,是無法限制的,因為區域性變數每次都會重置為0。接下來第2種:

local recurtimes = 0

function recursiontest2()

if recurtimes < 10 then

recurtimes = recurtimes + 1

recursiontest2()

endend

這種方法可以控制次數,但是變數需要定義在方法體外,執行函式前都需要先把這個變數設為0,需要在遞迴方法外包一層,比較繁瑣。於是有了第3種解決方案:

function recursion(str, t)

str = str or "first time "

t = t or 0

t = t + 1

print(str, t)

if t < 10 then

recursion("times:", t)

endif t == 1 then

print("outer round")

endend

在遞迴時傳入乙個自增變數,達到閾值時停止遞迴,執行最外層時無需傳參,預設值為0,且可根據t的值判斷當前的遞迴層數,可以在遞迴結束時,在最外層執行完之前做其他事情,一舉兩得。

關於遞迴次數的計算

有這樣乙個題目 遞迴函式 1 int x intn 2 7else 811 計算x x 8 遞迴呼叫次數。大多數可能覺得這是乙個很簡單的題目,的確很簡單。但是要想在沒有編譯器的情況下正確的算出這個遞迴 呼叫次數其實還是需要點耐心.x x 8 我們先計算x 8 我們用count 0計數遞迴呼叫次數 1...

1113 遞迴呼叫的次數統計

description 如下程式的功能是計算 fibonacci數列的第n項。函式fib 是乙個遞迴函式。請你改寫該程式,計算第n項的同時,統計呼叫了多少次函式fib 包括main 對fib 的呼叫 include int fib int k int main void int fib int k ...

python 遞迴函式及遞迴次數受到限制的解決辦法

乙個函式在內部呼叫自己,那麼這個函式是遞迴函式。遞迴會反覆使用本身,每遞迴一次,越接近最終的值。當乙個問題可以由許多相似的小問題解決,可以考慮使用遞迴函式。隨著遞迴的深入,問題規模相比上次都應所減小。return函式本身的方法保證了遞迴的持續進行,但是如果沒有明確的結束條件,遞迴會無限進行下去。所以...