使用recursion.python的指数和

时间:2016-12-24 11:08:09

标签: python

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

n: int
x: real

并返回指数和函数:The function

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

我开始为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))

我很想得到一些帮助。非常感谢。

1 个答案:

答案 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问题,让你进入下一个你会遇到的错误,这是一个无限递归。作为建议,您应该仔细检查停止条件和递归步骤。