首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这条if-elif else语句打印42?

为什么这条if-elif else语句打印42?
EN

Stack Overflow用户
提问于 2019-04-24 22:22:26
回答 2查看 43关注 0票数 1

我不明白为什么它返回42。我问过一个朋友,我在PythonTutor...still上追踪了一下,这没有任何意义。为什么不返回9BC 6-1= 5,6-2= 4,5+4= 9?为什么它一直在循环?还在等什么?它怎么知道该停在哪里呢?

代码语言:javascript
运行
复制
def mystery(n):
    if n == 0:
        return 2 
    elif n == 1:
        return 4
    else: 
        return mystery(n-1) + mystery(n-2)

print(mystery(6))
EN

回答 2

Stack Overflow用户

发布于 2019-04-24 22:27:08

这被称为递归函数。它调用自己(使用新参数),直到它遇到一个“基本情况”n==0n==1

代码语言:javascript
运行
复制
mystery(0) == 2
mystery(1) == 4
mystery(2) = mystery(1) + mystery(0) = 6
mystery(3) = mystery(2) + mystery(1) = 10
mystery(4) = mystery(3) + mystery(2) = 16
mystery(5) = mystery(4) + mystery(3) = 26
mystery(6) = mystery(5) + mystery(4) = 42
票数 4
EN

Stack Overflow用户

发布于 2019-04-24 22:33:40

正如@Christian Slater所写的,你写了一个递归函数,你可能正在寻找:

代码语言:javascript
运行
复制
def mystery(n):
    if n == 0:
        return 2
    elif n == 1:
        return 4
    else:
        return (n-1) + (n-2)

print(mystery(6))

输出:9

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

https://stackoverflow.com/questions/55832381

复制
相关文章

相似问题

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