私は「逆転」バッジを得て答えを読んでいましたが、OPが彼らの宿題の多くを前もってやっていない再帰に関する質問を見つけました。本当に面白い答えを除けば、@ machieloはan answerをpythonで投稿しました。マシン上でグリップを実行する必要がありました。私はまだそれを理解していない。私はこの再帰の使用を理解していません
def recursive(x):
if x > 10:
print recursive(x/10)
return x%10
>>> recursive(2678)
2
6
7
8
私は私の最初の推測を試してみたが、私はそれがわかりました...それは2です
>>> 2678/10
267
>>> 267/10
26
>>> 26/10
2
>>> 2%10
2
間違っていることを知っています。 x
の他の数字の出力はどのように評価されますか?
EDIT
それは私がここに取得しない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)
への呼び出しは、それ自身のブランドの新しいベースケースと入力して、各...
別のヒント、誰ですか?
最後に
皆様に感謝します。私は今これを理解していると感じる...そのトリックはそれほど多くなかった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が...私はあなたのコメントをupvoteことを約だと、最初の答えに更新誰にクレジット:
>>> def recursive(x):
if x >= 10:
print recursive(x/10)
return x%10
と私は完全には分からないと思います。 "xの各数字"とはどういう意味ですか? –
私はすべての悪い推測で私の質問を泥沼にしたくありません**しかし** ... 'print recursive(x/10)'を 'return recursive(x/10)'に置き換えると、ベースケースが再帰の最初のパス。 – Droogans
あなたの例は私のためにその出力を生成しません – joaquin