De retour en Fonction Récursive

J'ai juste commencé à apprendre le python (v3.2.3) et ont rencontré un étrange problème sur le return dans cette fonction:

def test(x):
    if x > 9 :
        test(x - 10)
    else:
        print('real value',x)
        return x

x = int(input())
y = test(x)
print('this should be real value',y)

Quand je le lance, j'obtiens:

45
real value 5
this should be real value None

Mais je m'y attendais:

45
real value 5
this should be real value 5

J'ai essayé d'ajouter return x à l'extérieur de if et j'ai obtenu la valeur entrée par défaut. Quelqu'un peut-il expliquer comment return fonctionne?

  • C'est exactement le même que pour un non-appel récursif: si vous voulez propager la valeur de retour de la fonction que vous avez appelé, vous avez à faire vous-même, avec la return mot-clé. L'appel d'une fonction produit de sa valeur de retour, mais c'est à vous de faire quelque chose avec cette valeur de retour, si la fonction appelée est récursive ou non.
InformationsquelleAutor Alex Key | 2012-07-06