小编典典

从0到n打印的python递归函数?

python

我试图写一个递归函数,从打印0n,但我不知道该怎么做。我不小心做了一个从n到的打印0

def countdown(n):
    print(n)
    if n == 0:
        return 0
    return countdown(n - 1)

我不知道这是否有帮助,也许我可以更改代码中的内容以使其从0变为n


阅读 210

收藏
2020-12-20

共1个答案

小编典典

你差点知道了!这是一个固定的简化版本:

def countup(n):
    if n >= 0:
        countup(n - 1)
        print(n)

注意:

  • 您不必从仅打印值的递归函数返回任何内容
  • 对于升序打印时,print声明必须放在 递归调用
  • 如果n < 0仅打印,则递归退出,因为我们只在打印,此后无需执行任何操作即可返回None(Python的默认返回值)

更新

看来编写尾部递归解决方案非常流行:)哦,好吧,这是我的照片,它是@AndyHayden想法的简化且尾部递归的版本-
使用尾部调用优化装饰器配方

@tail_call_optimized
def countup(N, n=0):
    print(n)
    if n < N:
        countup(N, n + 1)

无论哪种方式,它都能按预期工作:

countup(5)
=> 0
   1
   2
   3
   4
   5
2020-12-20