Ваша логика подсчета шагов рекурсии в основном правильная, вам просто нужно поместить операторы return
для обоих:
1) Базовый случай
2) Сам рекурсивный вызов
Следующая модификация вашего кода сделает то, что вы просите:
def Persistence(number, counter):
numArr = [int(i) for i in str(number)]
result = 1
data = None
for j in numArr:
result *= j
if len(str(number)) == 1:
data = str(counter)
return data
else:
counter = counter + 1
return Persistence(result, counter)
print(Persistence(333,0))
Приведенный выше код вернет результат:
3
Обратите внимание, что причина, по которой вы получили "None" в качестве вывода в исходном коде, заключается в том, что вы не делали возврат при самом рекурсивном вызове: **return** Persistence(result, counter)
Поэтому, когда вы запустили print(Persistence(333,0))
, он ничего не возвращал, что привело к None
.