递归函数中的Python返回命令

标签 python recursion return output

在学习 Python 和浏览互联网时,我偶然发现了 w3schools.com 上的一段代码。我尝试使用他们的内置站点 Python IDLE 并使用我自己的 Python 3.9.0 来运行它。 shell 。我得到的是两个不同的输出。
我想知道哪个输出是正确的输出,为什么它提供两个不同的输出。
代码及其输出
内置站点 Python IDLE
Built in site Python IDLE
Python 3.9.0 shell
Python 3.9.0 Shell
请注意,使用内置站点 Python IDLE 运行代码时,数字 21 仅打印(输出)一次,而使用 Python 3.9.0 Shell 运行代码时,它会打印(输出)两次。
我自己的调试
我尝试了一个简单的打印语句调试。检查结果只有一个不同,使用 Python 3.9.0 Shell 执行最后一个返回行并输出最后一个结果,而使用内置站点 Python IDLE 最后一个返回要么不执行要么不输出,在这种情况下,我相信是前者,我相信正确的输出是Python 3.9.0 Shell,但我不知道为什么会有两种不同的输出。
Print Statement Using Python 3.9.0 Shell Result Part 1 Result Part 2
Print Statement Using Built-in site Python IDLE Result Part 1 Result Part 2
源代码

def tri_recursion(k):
    if(k>0):
           result = k + tri_recursion(k-1)
           print(result)
    else:
           result = 0
    return result

tri_recursion(6)

最佳答案

您已添加 return result最后声明。对于任何 IDE,除非您打印该值,否则它不会显示。但是,IDLE 也会打印返回值。从技术上讲,两个输出都是正确的,因为两个解释器都配置为执行不同的操作。作为一个小例子,

def foo():
    return(1)
运行 foo()在 IDLE 上给出 >>> 1 ,而它在其他 IDE 上没有提供任何内容,因为没有打印语句

关于递归函数中的Python返回命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64457856/

相关文章:

python - 列表搜索中的快速字符串

variables - 在 OCaml 中为递归函数定义一个静态变量

PHP:从非 native 数组返回值?

javascript - loadData() 返回空数组

python - pyspark如何与java集成?

python - 对像 Digg 这样的东西进行建模的最佳方法是什么?

python - 使用 keras 和 Flask 加载模型时出错

python - Python 是否优化尾递归?

c - 递归调用流程解释?

Java 从方法返回