2016-11-29 4 views
1
def digit_sum(n): 
    '''(int)->number 
    Returns the sum of all the digits in the given integer, n''' 
    if n<10: 
     return n 
    return n%10 + digit_sum(n//10) 

def digital_root(n): 
    '''(int)->number 
    Returns the resulting sum of the digits in the given integer until it reaches a single digit number; via digit_sum''' 
    while n>9:  
     n=sum(digit_sum(n)) 
    return n 

digit_sumためのコードを書き、その後digital_rootを書き込むために再帰を使用します。私はこれについてどうやって行くのですか?どんな助けもありがとう!次のように変更することができますので、これは、その入力を想定して、アカウントに1未満の入力を取ることはありませんデジタルルートループなしのPython

def digit_root(n): 
    return (n - 1) % 9 + 1 

+0

私は本当に教授がなぜループを嫌うのだろうと思っていますか? – Maroun

+0

おそらく再帰運動ですか? –

答えて

1

アイデア私の全体数は、あなたは最後のものにも再帰を使わなければならないのですか?その場合、これは仕事をする必要があります:

def digital_root(n): 
    if n < 10: 
     return n 
    return digital_root(digit_sum(n)) 
8

Wikipediaリスト簡単なOデジタルルートのための(1)式

def digit_root(n): 
    return (n - 1) % 9 + 1 if n else 0 

例::だから

>>> digit_root(1) 
1 
>>> digit_root(11) 
2 
>>> digit_root(235) 
1