我正在尝试创建一个递归函数,该函数返回可被四整除的数字之和,但从总数中排除数字本身,例如
print(divFour(8))
应该给我4个而不是12个,而print(divFour(9))
应该给我12个。
def divFour(n):
if n == 0:
return 0
else:
return n % 4 + divFour(n-1)
print(divFour(8))
print(divFour(8))
== 4
;
print(divFour(7))
== 4
;
print(divFour(9))
== 12
答案 0 :(得分:1)
检查以下代码:
def divFour(n):
if n == 0:
return 0
else:
res = n-1 if (n-1)%4 == 0 else 0
return res + divFour(n-1)
print(divFour(9))
输出:
12
答案 1 :(得分:0)
您可以对for
使用简单的range
循环:
def div_k(n, k=4):
val = 0
for i in range(n):
val += i * (i % k == 0)
return val
res = div_k(8) # 4
res = div_k(9) # 12
或者,您可以使用生成器。嵌套函数结构纯粹是为了使您不必调用sum
外部 div_k
。
def div_k(n, k=4):
def div_gen(n, k):
for i in range(n):
yield i * (i % k == 0)
return sum(div_gen(n, k))
答案 2 :(得分:0)
以防万一,您实际上不需要任何递归来计算它。您可以只使用数学:
def divFour(n):
div = (n-1) // 4
return 4 * div*(div+1)/2