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

use*_*845 1 python recursion python-2.7

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

def dig_sum(n):
    s = 0
    while n:
         s = s + n % 10
         n = n/10
    return s
Run Code Online (Sandbox Code Playgroud)

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

def dig_sum(n):
    s = 0
    if n != 0:
        s = n % 10
        s += s
        return dig_sum(n/10)
    return s
Run Code Online (Sandbox Code Playgroud)

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

Cor*_*mer 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
Run Code Online (Sandbox Code Playgroud)

测试

>>> dig_sum(1001)
2

>>> dig_sum(12345)
15
Run Code Online (Sandbox Code Playgroud)