google colab python递归错误是bug吗?

google colab python递归错误是bug吗?,python,recursion,google-colaboratory,Python,Recursion,Google Colaboratory,这是代码和结果 def tri_recursion(k): if(k > 0): result = k + tri_recursion(k - 1) print(result) else: result = 0 return result print("\n\nRecursion Example Results") tri_recursion(6) 为什么“21”来了两次? 我也在“VS代码”、“PyCharm”上执行了它,但

这是代码和结果

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

print("\n\nRecursion Example Results")
tri_recursion(6)
为什么“21”来了两次? 我也在“VS代码”、“PyCharm”上执行了它,但这些不包括最后的“21” 怎么了

代码和结果:

IDE显示任何非“falsey”表达式的值。函数将值
21
返回主程序。由于调用是作为简单表达式进行的,因此IDE计算该表达式并显示值;这就是第二个
21
。如果要抑制它,请尝试指定值——无论如何,这是正确的做法

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

print("\n\nRecursion Example Results")
tri_recursion(6)    # Implicitly display the expression value

第一个
21
来自
print
调用。第二个是解释器显示的函数的返回值。如果您不想看到它,可以将函数调用的结果分配给变量。那么为什么VS代码的结果为“1 3 6 10 15 21”?因为您可能是通过文件调用它的。你只需要一个像
123
这样的数字就可以看到同样的情况。如果您键入VS代码,它会显示吗?你的交互式口译员会。既然你知道它是从哪里来的,你当然可以自己解决细节了。啊哈!谢谢。您能告诉我如何只打印一个'21'吗?(与代码顶部对齐)我已经在第一条评论中告诉过你。将结果赋给一个变量。例如,
val=tri_递归(6)
。然后,在最后将没有要显示的值。
def tri_recursion(k):
    if(k > 0):
    result = k + tri_recursion(k - 1)
    print(result)   # Explicitly print the reults
  else:
    result = 0
  return result

print("\n\nRecursion Example Results")
tri_recursion(6)    # Implicitly display the expression value
do_not_show = tri_recursion(6)