使用recursion.python的指数和

使用recursion.python的指数和,python,Python,我需要使用接受以下变量的递归编写一个函数: n: int x: real 并返回指数和函数: 我根本不能使用循环,只能使用递归 我开始为sum和factorial编写两个递归函数,但当我尝试组合这两个函数时,得到了错误消息: TypeError: 'int' object is not iterable 我不太明白它的意思,因为我没有使用循环,只使用递归。这是我的密码: def sum_exp(n): if n == 0: return 0 return n

我需要使用接受以下变量的递归编写一个函数:

n: int
x: real
并返回指数和函数:

我根本不能使用循环,只能使用递归

我开始为sum和factorial编写两个递归函数,但当我尝试组合这两个函数时,得到了错误消息:

TypeError: 'int' object is not iterable
我不太明白它的意思,因为我没有使用循环,只使用递归。这是我的密码:

def sum_exp(n):
    if n == 0:
        return 0
    return n + sum(n - 1)


def factorial(n):
    if n == 0:
        return 1
    else:
        return n*factorial(n-1)


def exp_n_x(n, x):
    if n == 0:
        return 1
    else:
        return sum_exp(x*(1/factorial(n)))
print(exp_n_x(10, 10))
我很想得到一些帮助。事先非常感谢。

您在以下内容中输入了一个错误:

def sum_exp(n):
    if n == 0:
        return 0
    return n + sum(n - 1)
               ^^^
其中使用全局函数,该函数接受iterable并返回其元素之和。因此:

>>> sum(42)
TypeError: 'int' object is not iterable
鉴于

>>> sum([42])
42
因此,您的解决方案很简单:

def sum_exp(n):
    if n == 0:
        return 0
    return n + sum_exp(n - 1)

注意:这个答案只是为了解决TypeError的问题,并让您转到下一个您将遇到的错误,这是一个无限递归。作为建议,您应该仔细检查停止条件和递归步骤。

我无法重现您的错误,但是您可能需要在
exp\n\u x
函数中修改else情况下的return语句。也就是说,当你除以整数时,结果会被截断。。。您可以通过将
(1/factorial(n))
更改为
(1.0/factorial(n))
来解决此问题。您的
sum_exp
函数不是递归函数。它调用的是
sum
,而不是它本身。您的问题可以简化为
sum(0)
。同样的错误。