google colab python递归错误是bug吗?

问题描述

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)

这是代码,结果来了

1
3
6
10
15
21
21

为什么“ 21”出现了2次? 我还在“ VS Code”,“ PyCharm”上执行了该命令,但这些都不包括最后一个“ 21” 怎么了?

代码和结果:

enter image description here

解决方法

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

您的IDE将显示不是“ falsey”的任何表达式的值。您的函数将值21返回到主程序。由于您以简单的表达式进行调用,因此您的IDE会评估该表达式并显示值。那就是您获得第二个21的地方。如果您想抑制它,请尝试分配该值-无论如何都是正确的做法。

do_not_show = tri_recursion(6)