分析递归算法

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呢?

dan*_*anh 5

展开,它看起来像这样:

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)