edm*_*rto 1 algorithm recursion
我试图弄清楚这个算法接受一个输入,int并应该返回一个输出的每个元素的总和int.
# Input -> 4321
# output -> 10 (4+3+2+1)
def sum_func(n):
# Base case
if len(str(n)) == 1:
return n
# Recursion
else:
return n%10 + sum_func(n/10)
Run Code Online (Sandbox Code Playgroud)
当试图拆分这个算法时,这就是我想出来的
1st loop -> 1 + 432 = 433
2nd loop -> 2 + 43 = 45
3rd loop -> 3 + 4 = 7
4th loop -> 4 + 4 = 8
Run Code Online (Sandbox Code Playgroud)
怎么能想出结果10呢?
展开,它看起来像这样:
sum_func(4321)
= 1 + sum_func(432)
= 1 + 2 + sum_func(43)
= 1 + 2 + 3 + sum_func(4)
= 1 + 2 + 3 + 4
Run Code Online (Sandbox Code Playgroud)