我在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
我的递归函数有什么问题?做这些功能时最佳做法是什么? 提前谢谢!
答案 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