我正在阅读获得“反转”徽章的答案,我发现一个关于递归的问题,即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