我的程序如何退出函數調用?我有一個遞歸函數,當條件滿足時,調用它自己。退出Python函數調用
def function(arg):
if (condition):
...
return function(arg + 1)
我對它是如何工作的猜測:如果條件不滿足,函數調用將終止。在我的程序中,似乎並不是這種情況 - 條件被違反,但程序跳轉到返回語句(也許是它看到的唯一返回語句?)。
是否有某種退出(),我可以把它放在一個else子句?
我的程序如何退出函數調用?我有一個遞歸函數,當條件滿足時,調用它自己。退出Python函數調用
def function(arg):
if (condition):
...
return function(arg + 1)
我對它是如何工作的猜測:如果條件不滿足,函數調用將終止。在我的程序中,似乎並不是這種情況 - 條件被違反,但程序跳轉到返回語句(也許是它看到的唯一返回語句?)。
是否有某種退出(),我可以把它放在一個else子句?
如上所示,您的代碼將始終返回None
。它會經歷所有的遞歸,直到條件不滿足爲止,然後退出函數的結尾並返回None
。
例如,試試這個:
def f(x):
if (x<10):
return f(x+1)
return x
並從此建立做一些有用的東西。
「函數終止」導致它返回None
。如果你看到不同的東西,那很可能是你看到的return
,因爲它可能是錯誤的。使用python -tt myscript.py
來驗證您沒有混合製表符和空格。
我認爲他的意思是在那裏縮進 - 「我有一個遞歸函數,當條件滿足時,調用它自己。」 –
@Tom:當然,但如果你不恰當地混合了製表符和空格,那麼它可以*在視覺上顯示*正確,但會被錯誤地解釋。 –
你爲什麼說它是錯誤的? –
你可以發佈整個腳本而不是僞代碼嗎?如果沒有完整的函數和任何相關代碼,很難分辨遞歸調用中出現什麼問題。 – chown