分析递归算法

时间:2018-05-10 17:13:16

标签: 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)

当试图拆分这个算法时,这就是我提出的

1st loop -> 1 + 432 = 433
2nd loop -> 2 + 43 = 45
3rd loop -> 3 + 4 = 7
4th loop -> 4 + 4 = 8

如何能够提出10的结果?

2 个答案:

答案 0 :(得分:5)

展开,它看起来像这样:

sum_func(4321)
= 1 + sum_func(432)
= 1 + 2 + sum_func(43)
= 1 + 2 + 3 + sum_func(4)
= 1 + 2 + 3 + 4

答案 1 :(得分:0)

您必须在求和之前到达基本案例:

Iteration 1: 1 + sum_func(432)
Iteration 2: 1 + 2 + sum_func(43)
Iteration 3: 1 + 2 + 3 + sum_func(4) = 1 + 2 + 3 + 4 = 10