Рекурсия, бесконечный цикл, не работает return

LonelyWorld

Новичок
Пользователь
Ноя 8, 2020
5
0
1
Напишите функцию, которая принимает положительный параметр num и возвращает его мультипликативное постоянство, то есть количество раз, когда вы должны умножить цифры в num, пока не достигнете одной цифры.

Например:
Код:
 persistence(39) # returns 3, because 3*9=27, 2*7=14, 1*4=4
                 # and 4 has only one digit
                 
persistence(999) # returns 4, because 9*9*9=729, 7*2*9=126,
                  # 1*2*6=12, and finally 1*2=2

persistence(4) # returns 0, because 4 is already a one-digit number

Мой код:

Код:
def kek(n):
    count = 1
    while n > 0:
        c = n % 10
        count = count * c
        n =  n // 10
    while True:
        if count < 10:
            break
        else:  
            kek(count)
    return count
       
print(kek(999))

Когда дело доходит до return, он почему-то не выводит мне заветную двоечку, а продолжает делать рекурсию
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
а вам обязательно с рекурсией?
в задании вроде такого нет...
вот простой пример
Python:
n = 999


def persistence(n):
    per = 0
    while n > 9:
        p = 1
        x = n
        while x:
            p *= x % 10
            x //= 10
        per += 1
        n = p
    return per


print(persistence(n))
 

Форум IT Специалистов