Python 2.7中迭代函数的递归函数如何?

时间:2014-09-24 19:31:12

标签: python python-2.7 recursion

我在python 2.7中编写了一个函数来计算给定数字的数字和:

def dig_sum(n):
    s = 0
    while n:
         s = s + n % 10
         n = n/10
    return s

现在尝试将其重写为递归函数:

def dig_sum(n):
    s = 0
    if n != 0:
        s = n % 10
        s += s
        return dig_sum(n/10)
    return s

我的递归函数有什么问题?做这些功能时最佳做法是什么? 提前谢谢!

2 个答案:

答案 0 :(得分:5)

递归函数看起来像这样

def dig_sum(n):
    if n < 10:                       # Handle single digits as your base case
        return n
    else:
        return n%10 + dig_sum(n/10)  # Add one's digit, then shift and continue

测试

>>> dig_sum(1001)
2

>>> dig_sum(12345)
15

答案 1 :(得分:2)

def dig_sum(n):
    if n != 0:
        s = n % 10
        return s + dig_sum(n/10)
    else:
        return 0

print dig_sum(45)

输出

9