我有一個簡單的函數可以打破數字,如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
我有一個簡單的函數可以打破數字,如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
您使用的代碼不是遞歸。遞歸有兩個主要特徵:基本情況和遞歸。
現在,讓我們打破你的問題:
基本情況:
說我們有比10小的數目,然後我們將返回的數量。讓我們保持它作爲我們的基本情況。
遞歸:
如果我們有一些...xyz
(x
,y
和z
爲數字),我們將採取的最後一個數字,加數字的最後一位離開了,直到我們有一些較小的大於10
代碼:
def sumnum (n):
if n < 10:
return n
return n % 10 + sumnum(n // 10)
'DEF sumnum(N):返回(sumnum(N // 10) + n%10)if n else 0' – falsetru
遞歸意味着調用自己的函數。 'sumnum'自稱嗎?這將回答你爲什麼或爲什麼不是遞歸的問題。 – mkrieger1