首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用recursion.python的指数和

使用recursion.python的指数和
EN

Stack Overflow用户
提问于 2016-12-24 11:08:08
回答 1查看 2.2K关注 0票数 1

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

代码语言:javascript
运行
复制
n: int
x: real

并返回指数和函数:

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

我从编写求和和阶乘的两个递归函数开始,但是当我试图将两者结合起来时,我得到了错误消息:

代码语言:javascript
运行
复制
TypeError: 'int' object is not iterable

我不太明白这意味着什么,因为我没有使用循环,只使用递归。这是我的代码:

代码语言:javascript
运行
复制
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))

我很乐意在这方面寻求帮助。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-12-24 11:29:20

你犯了一个错误:

代码语言:javascript
运行
复制
def sum_exp(n):
    if n == 0:
        return 0
    return n + sum(n - 1)
               ^^^

其中使用全局函数sum(),它接受可迭代性,并返回其元素的和。因此:

代码语言:javascript
运行
复制
>>> sum(42)
TypeError: 'int' object is not iterable

鉴于

代码语言:javascript
运行
复制
>>> sum([42])
42

因此,您的解决方案很简单:

代码语言:javascript
运行
复制
def sum_exp(n):
    if n == 0:
        return 0
    return n + sum_exp(n - 1)

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41312712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档