經常會用到遞迴,雖然能解決很多問題,但其缺點很明顯,有可能無法跳出造成死迴圈,能控制遞迴次數就可以避免這種情況。
用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函式本身的方法保證了遞迴的持續進行,但是如果沒有明確的結束條件,遞迴會無限進行下去。所以...