Python 3.6 逆序递归

Python 3.6 逆序递归,python-3.6,Python 3.6,我想以相反的顺序递归地打印列表中的元素 def f3(alist): if alist == []: print() else: print(alist[-1]) f3(alist[:-1]) 我知道它工作得很好,但我不知道两者之间的区别 return f3(alist[:-1]) 及 事实上,两者都运作良好。 我的输入是这样的 f3([1,2,3]) f3([]) f3([3,2,1]) 虽然在本节目中不明显,但两者之

我想以相反的顺序递归地打印列表中的元素

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

    else:
        print(alist[-1])
        f3(alist[:-1])
我知道它工作得很好,但我不知道两者之间的区别

return f3(alist[:-1]) 

事实上,两者都运作良好。 我的输入是这样的

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

虽然在本节目中不明显,但两者之间存在差异。请看下面的示例,我所做的只是将一个值作为参数传递,并使其递增,从而使其在达到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)
输出为“无”

这是因为我们没有返回任何要处理的值

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

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)