逆序递归

时间:2017-07-09 00:40:41

标签: python-3.6

我想以递归的顺序打印出列表中的元素。

 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])

1 个答案:

答案 0 :(得分: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)

输出为“无”。

这是因为我们没有返回任何值来处理。

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