逆序递归
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 就像可以处理的函数内部通信,而不是再次 运行 函数。
我想递归倒序打印出列表中的元素
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 就像可以处理的函数内部通信,而不是再次 运行 函数。