def factorial(n):
if n == 0:
return 1
else:
return n * factorial (n-1)
def sum_even_factorials(n):
if n == 0:
return 1
elif n % 2 == 0 and n>=0:
total = 0
return total + sum(factorial(n))
n = n - 1
我做错了什么?我定义了阶乘函数,然后继续找到偶数阶乘的总和。
答案 0 :(得分:1)
一个简单的解决方案是循环范围,只有当数字是偶数时才求和:
def sum_even_factorials(n):
total = 0
for i in range(n + 1): # or just n, depending on the requirements
if i % 2 == 0:
total = total + factorial(i)
return total
您无法在sum
上应用int
(这是一个错误)。
答案 1 :(得分:0)
内置和函数用于不适用于int的列表,你的代码绝对没问题,但是不使用sum,它会产生错误(因为你没有要迭代的元素数量)
TypeError:' int'对象不可迭代
您的代码如下:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial (n-1)
def sum_even_factorials(n):
if n == 0:
return 1
elif n % 2 == 0 and n>=0:
total = 0
return total + factorial(n)
n = n - 1