我需要使用递归编写一个函数,该函数接受以下变量:
n: int
x: real
并返回指数和函数:
我根本不能使用循环,只有递归。
我从编写求和和阶乘的两个递归函数开始,但是当我试图将两者结合起来时,我得到了错误消息:
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))
我很乐意在这方面寻求帮助。提前谢谢。
发布于 2016-12-24 11:29:20
你犯了一个错误:
def sum_exp(n):
if n == 0:
return 0
return n + sum(n - 1)
^^^
其中使用全局函数sum()
,它接受可迭代性,并返回其元素的和。因此:
>>> 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的问题,并让您进入下一个您将遇到的错误,即无限递归。作为建议,您应该反复检查停止条件和递归步骤。
https://stackoverflow.com/questions/41312712
复制相似问题