找到偶数阶乘的总和

时间:2018-02-04 06:07:10

标签: python

    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

我做错了什么?我定义了阶乘函数,然后继续找到偶数阶乘的总和。

2 个答案:

答案 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