递归函数即使有基本情况也可以无限运行

count = 5
def countdown(count):
    print(count)
    count = count - 1
    while count > 0:
     countdown(count)
    if count<=0:
        return

countdown(count)

我试图了解递归的基础。当我运行此函数时,该函数将无限制地将计数值打印为1。但是,所需的输出应为54321。while循环条件是否有问题?

评论
囍

问题是您使用:

while count > 0:
     countdown(count)

递归又称为while循环的意义是什么? 这将导致以下问题:在递减计数内减少了count,但是在调用返回时,由于python使用按值参数传递的事实,count变量保持不变。

除此之外,它通常在一开始就具有基本情况。所有这些导致以下代码:

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


countdown(count)
点赞
评论