Código:
def fib(n):
print 'n =', n
if n > 1:
return n * fib(n - 1)
else:
print 'fin de la línea'
return 1
fib(10)
No entiendo la línea return n * fib(n - 1)
es decir, vuelve a ejecutar la función pasando el argumento n pero el signo de * ahí me confunde...
en el primer caso, si n vale 10 entonces no queda algo como return 10 * 9 ???
no sería más fácil algo del tipo return n - 1 ?