我目前正在研究一個非常容易遞回的函式。但是我遇到的問題是我總是收到錯誤,因為該函式經常被呼叫。所以我必須重寫這個函式,以便不使用遞回。這是遞回函式:
def calculate_stock(stock, stock_base_line, days):
sales_after_stock = stock - (stock_base_line/14)
if sales_after_stock > 0:
days =1
return calculate_stock(sales_after_stock, stock_base_line, days)
else:
return days
當sales_after_stock 低于時回圈應停止0。
現在我嘗試重寫遞回:
def calculate_stock(stock, stock_base_line, days):
sales_after_stock = stock - (stock_base_line/14)
while(sales_after_stock > 0):
if sales_after_stock > 0:
days =1
sales_after_stock = sales_after_stock - (stock_base_line/14)
else:
return days
else:
return days
所以它沒有正確地減去 的值,sales_after_stock因此回圈是無限的。我該如何解決這個問題?
uj5u.com熱心網友回復:
你的實作有幾個問題:
- 您不需要
if sales_after_stock > 0在 while 回圈中進行檢查,因為在回圈的每次迭代之前都會進行檢查。 - 你沒有從中減去任何東西
sales_after_stock- 每次你總是將它設定為等于stock - stock_base_line / 14
這應該適合你:
def calculate_stock(stock, stock_base_line, days):
sales_after_stock = stock - stock_base_line / 14
while sales_after_stock > 0:
days = 1
sales_after_stock -= stock_base_line / 14
return days
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383335.html
上一篇:遞回步驟不更新輸出
下一篇:從嵌套串列組合物件
