2017-05-15 84 views
0

我有一個簡單的函數可以打破數字,如54並返回這兩個數字的和(即9)。我也在研究遞歸,我想知道下面的代碼是否符合標準。爲什麼?或爲什麼不?如果不是,我怎樣才能解決這個簡單的問題,使用遞歸範式?如何修改這個Python函數以使用遞歸

def sumnum(n): 
    n = str(n) 
    a = [] 
    for i in n: 
     a.append(i) 
    sum(int(n) for n in a) 
sumnum(54) 
9 
+0

'DEF sumnum(N):返回(sumnum(N // 10) + n%10)if n else 0' – falsetru

+1

遞歸意味着調用自己的函數。 'sumnum'自稱嗎?這將回答你爲什麼或爲什麼不是遞歸的問題。 – mkrieger1

回答

-1

您使用的代碼不是遞歸。遞歸有兩個主要特徵:基本情況和遞歸。

現在,讓我們打破你的問題:

基本情況:

說我們有比10小的數目,然後我們將返回的數量。讓我們保持它作爲我們的基本情況。

遞歸:

如果我們有一些...xyzxyz爲數字),我們將採取的最後一個數字,加數字的最後一位離開了,直到我們有一些較小的大於10

代碼:

def sumnum (n): 
    if n < 10: 
     return n 
    return n % 10 + sumnum(n // 10) 
+0

注意巧妙的使用遞歸遞歸內部的解釋... – mkrieger1

+0

@ mkrieger1打算,確實 – Uriel

+1

我想知道downvote的原因,所以我可以提高回答 – Uriel