逆序递归

Reverse order recursion

我想递归倒序打印出列表中的元素

 def f3(alist):
    if alist == []:
        print()

    else:
        print(alist[-1])
        f3(alist[:-1])

我知道它运行良好,但我不知道

之间的区别
return f3(alist[:-1]) 

f3(alist[:-1])

实际上两者都运行良好。 我的输入是这样的。

f3([1,2,3])
f3([])
f3([3,2,1])

两者之间存在差异,但在本程序中并不明显。看看下面的例子,我所做的就是将一个值作为参数传递并递增它,从而使它成为 return 一旦它达到 10 或更大的值:

from sys import exit

a = 0
def func(a):
    a += 1
    if a >= 10:
        return a
        exit(1)
    else:
        # Modifications are made to the following line
        return func(a)

g = func(3)
print(g)

此处输出为10

现在,如果我不使用 "return" 关键字以第二种方式重写代码,如下所示:

from sys import exit

a = 0
def func(a):
    a += 1
    if a >= 10:
        return a
        exit(1)
    else:
        # Modifications are made to the following line
        func(a)

g = func(3)
print(g)

输出为"None"。

这是因为我们没有return处理任何值。

简而言之,return 就像可以处理的函数内部通信,而不是再次 运行 函数。