使用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)
。同样的错误。