我正在閱讀獲得「反轉」徽章的答案,我發現一個關於遞歸的問題,即OP沒有打擾他們做許多家庭作業。除了一些真正有趣的答案之外,@ machielo在python中發佈了an answer,我必須在我的機器上運行才能掌握它。我仍然不理解它。我不明白這是遞歸使用
def recursive(x):
if x > 10:
print recursive(x/10)
return x%10
>>> recursive(2678)
2
6
7
8
我嘗試了我的第一個猜測,但我知道這是錯
>>> 2678/10
267
>>> 267/10
26
>>> 26/10
2
>>> 2%10
2
好吧......這是兩個。這是如何評估x
中其他數字的輸出?
編輯
這是print
聲明,我不明白這裏。我修改了代碼,例如:
>>> def recursive(x):
if x > 10:
print x
print recursive(x/10)
return x%10
>>> #I will comment the interpreter session here...
>>> recursive(2345)
2345 # first feed in...print the raw number `x`
234 # 2345/10 does equal 234...the 5 is being held back somewhere...
23 # and each pass through the recursive loop removes the last digit...
2 # but where was it being stored at, so that each evaluation of
3 # x > 10 finally started returning False
4 # and returns the number, exiting the function
5 # ...
我在想,在每個貫穿,調用print recursive(x/10)
創建一個新的函數對象,每個都有它自己的全新的基本情況和輸入法...
另一個提示,任何人?
FINALLY
感謝大家。我覺得我現在明白了......這個技巧並不是print
,因爲它是x%10
。 2345%10 == 5
...
>>> def recursive(x):
print "Raw `x`:", x
if x > 10:
print "Recurse `x`:", x
print recursive(x/10)
print "Last `x`:", x
return x%10
>>> recursive(2345)
Raw `x`: 2345
Recurse `x`: 2345
Raw `x`: 234
Recurse `x`: 234
Raw `x`: 23
Recurse `x`: 23
Raw `x`: 2
Last `x`: 2
2
Last `x`: 23
3
Last `x`: 234
4
Last `x`: 2345
5
此外,信貸對誰進去,並更新了最初的回答是I previously linked to ...我要給予好評您的評論:
>>> def recursive(x):
if x >= 10:
print recursive(x/10)
return x%10
我想我不完全理解這個問題。 「x'中的每個數字」是什麼意思? – 2012-01-02 23:04:52
我不想用我所有的錯誤猜測**來渾濁我的問題,但** ...用'return recursive(x/10)'替換'print recursive(x/10)'將會把基本情況推到遞歸的第一遍。 – Droogans 2012-01-02 23:06:44
您的示例不會爲我生成該輸出 – joaquin 2012-01-02 23:08:43