Foo(3)
appels Foo(2)
, Foo(1)
et Foo(0)
Foo(1)
et Foo(0)
retourner immédiatement. Appliquez maintenant la même logique pour Foo(2)
, qui ne revient pas immédiatement.
Pour obtenir le résultat, dessiner un arbre comme celui-ci:
Foo(3)
/ | \
Foo(2) Foo(1) Foo(0)
Continuer dessiner l'arbre jusqu'à ce que vous avez des appels récursifs qui retournent immédiatement (pour lesquels les premiers if
renvoie true), puis utilisez les résultats pour calculer les valeurs qui sont plus élevées dans l'arbre.
Vous pouvez utiliser l'arborescence pour déterminer le nombre d'appels récursifs effectués.
Pourquoi courez-vous pas et savoir? –
Je dois être en mesure d'échanger à la main je m'attends à quelque chose de similaire à cela dans l'examen: D – bubdada
7 appels: http://ideone.com/0LU9T – zengr