我已经编写了这个代码来找到一个数字的因素。在思考和尝试之后,我无法得到输出数字的总和。我希望得到这些数字的总和作为输出递归。其中&# 39;我的代码:
def p(n,c):
s = 0
if c >= n:
return n
if n % c == 0:
s += c
print(s,end=',')
return p(n,c+1)
n = int(input('enter no:'))
c = 1
print(p(n,c))
答案 0 :(得分:0)
鉴于评论,似乎这可能是你想要的:
sum([n for n in xrange(1,24) if 24 % n == 0])
使它更通用:
def sum_of_factors(x):
return sum([n for n in xrange(1,x) if x % n == 0])
编辑:这是一个递归版本:
def sum_of_factors(x, y=1):
if (y >= x):
return 0
if (x % y == 0):
return y + sum_of_factors(x, y + 1)
return sum_of_factors(x, y + 1)
>>> sum_of_factors(24)
36
答案 1 :(得分:0)
这是您正在寻找的输出吗? 使用全局变量
s = 0
def p(n,c):
global s
if c >= n:
return n
if n % c == 0:
s += c
print(s,end=',')
return p(n,c+1)
n = int(input('enter no:'))
c = 1
print(p(n,c))
输出
enter no:1,3,6,10,16,24,36,24