Вы не return
указываете значение рекурсивных вызовов на makeChange2
.
Как только управление достигает одного из этих вызовов на makeChange2
и завершает вызов, программа переходит к следующему оператору, который является концом функции; таким образом, он возвращает None
.
Если эта концепция все еще доставляет вам проблемы, попробуйте запустить эту простую факториальную программу с ключевым словом return
в строке return n*factorial(n-1)
и без него:
def factorial(n):
if n == 0 or n == 1:
return 1
return n * factorial(n-1)
print factorial(3)
Ручной просмотр кода должен помочь выяснить, что не так в вашей исходной программе.