我需要使用递归来编写一个接受以下变量的函数:
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))
我很想得到一些帮助。非常感谢。
答案 0 :(得分:2)
你输错了:
def sum_exp(n):
if n == 0:
return 0
return n + sum(n - 1)
^^^
使用全局函数sum()
,它接受一个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)
N.B。:这个答案只是为了解决你的TypeError问题,让你进入下一个你会遇到的错误,这是一个无限递归。作为建议,您应该仔细检查停止条件和递归步骤。