2011-09-10 127 views
1

我的程序如何退出函數調用?我有一個遞歸函數,當條件滿足時,調用它自己。退出Python函數調用

def function(arg): 
    if (condition): 
     ... 
     return function(arg + 1) 

我對它是如何工作的猜測:如果條件不滿足,函數調用將終止。在我的程序中,似乎並不是這種情況 - 條件被違反,但程序跳轉到返回語句(也許是它看到的唯一返回語句?)。

是否有某種退出(),我可以把它放在一個else子句?

+3

你可以發佈整個腳本而不是僞代碼嗎?如果沒有完整的函數和任何相關代碼,很難分辨遞歸調用中出現什麼問題。 – chown

回答

3

如上所示,您的代碼將始終返回None。它會經歷所有的遞歸,直到條件不滿足爲止,然後退出函數的結尾並返回None

例如,試試這個:

def f(x): 
    if (x<10): 
     return f(x+1) 
return x 

並從此建立做一些有用的東西。

0

如果Python函數未明確return值,則返回None。隱含的return None與C語言中的return類似。

+1

這與問題沒有任何關係。 – chown

+1

@chown是的,它確實是 –

+1

他問*如何退出函數調用,因爲他當前的代碼沒有退出他期望的函數。返回值並不真正起到解決問題的作用。 – chown

0

「函數終止」導致它返回None。如果你看到不同的東西,那很可能是你看到的return,因爲它可能是錯誤的。使用python -tt myscript.py來驗證您沒有混合製表符和空格。

+0

我認爲他的意思是在那裏縮進 - 「我有一個遞歸函數,當條件滿足時,調用它自己。」 –

+0

@Tom:當然,但如果你不恰當地混合了製表符和空格,那麼它可以*在視覺上顯示*正確,但會被錯誤地解釋。 –

+0

你爲什麼說它是錯誤的? –