Stavo leggendo le risposte ottenendo un badge di "inversione" e ho trovato una domanda riguardante la ricorsione in cui l'OP non si prendeva la briga di svolgere gran parte dei compiti a casa in anticipo. A parte alcune risposte davvero divertenti, @machielo ha pubblicato an answer in python che ho dovuto eseguire sulla mia macchina per fare presa. Non lo capisco ancora.Non capisco questo uso di ricorsione
def recursive(x):
if x > 10:
print recursive(x/10)
return x%10
>>> recursive(2678)
2
6
7
8
ho provato la mia prima ipotesi, ma so che è sbagliato
>>> 2678/10
267
>>> 267/10
26
>>> 26/10
2
>>> 2%10
2
Va bene ... questo è il due. Come valuta questo l'output degli altri numeri in x
?
EDIT
E 'il print
dichiarazione che non ottengo qui. Ho modificato il codice in quanto tale:
>>> 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 # ...
sto pensando che durante ogni attraversano, la chiamata a print recursive(x/10)
crea un nuovo oggetto funzione, ciascuno con il proprio marchio nuovo caso base e ingresso ...
Un altro suggerimento, chiunque?
FINALMENTE
Grazie a tutti. Sento di aver capito questo ... il trucco non era tanto print
come era 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
Inoltre, il credito a chi è andato in e aggiornato la risposta iniziale che I previously linked to ... sto per upvote tuo commento:
>>> def recursive(x):
if x >= 10:
print recursive(x/10)
return x%10
Penso di non capire completamente la domanda. Cosa intendi con "ogni numero in' x' "? –
Non voglio infangare la mia domanda con tutte le mie brutte supposizioni ** ma ** ... sostituendo 'print recursive (x/10)' con 'return ricorsive (x/10)' spingerà il case base al primo passaggio di ricorsione. – Droogans
il tuo esempio non produce quell'output per me – joaquin