Цифровой root номера с использованием рекурсии - PullRequest
0 голосов
/ 18 февраля 2020

Я пишу рекурсивную функцию для вычисления цифрового root заданного числа:

def digital_root(num):
    sum = 0
    while num > 0:
        sum += num % 10
        num = num // 10

    while sum > 10:
        sum = digital_root(sum)

    return sum

Я не уверен, следует ли заменить второй while на оператор if, и если да, то почему? (а если нет, то почему?)

Когда я пробую обе версии, возвращаемое значение одинаково. Например, для числа 10598 выходные данные в обоих из них равны 5.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Итак, сначала, пожалуйста, подумайте, о чем вы спрашиваете.

Если относится к условию и относится к выполнению повторного действия, пока выполняется определенное условие.

digital root рекурсия останавливается только тогда, когда полученная сумма di git меньше 10.

0 голосов
/ 18 февраля 2020

Пожалуйста, обязательно примите ответ, если он работает, устал от людей, не принимающих мои решения, когда он работает для них

def digital_root(num):
    #Base case for recursion.
    # recursion always needs a base case
    if len(str(num)) == 1:
        return num
    #Get sum of num by turning it into a string and looping through it, 
    #adding each index one by one
    sum = 0
    for i in str(num):
        sum += int(i)
    #get the digital root of the sum
    return digital_root(sum)


def main():
    print(digital_root(27518))



if __name__ == '__main__':
    main()

Вот вам go

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...