Python递归函数中,如何实现return语句的嵌套使用?

2026-05-21 21:251阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计467个文字,预计阅读时间需要2分钟。

Python递归函数中,如何实现return语句的嵌套使用?

在完成一道练习题时(参考下文篇目《在当前目录下递归查找包含指定字符串的文件》),发现函数中的return值竟然是None,令人困惑不解。尝试简化代码,如下所示,以验证结果:

在做一道练习题(参照下篇博文《在当前目录下递归的查找包含指定字符串的文件》)的时候,发现函数中的return的值竟然是None,百思不得其解,尝试化繁为简,用以下的简单的代码验证了一下

问题版本代码:为什么return i 返回的是 i , 而print(i)得到的是 0

def func(i):
if i == 0:
print(i)
return i
elif i > -2:
i = i-1
func(i)

print(func(3))


运行结果:
0
None

如果把递归过程画成流程图,或许更容易理解一些

case1: 有递归的情况

case2: 无递归的情况

错误的解决方案:

def func(i):
if i == 0:
print(i)
return i
elif i > -2:
i = i-1
func(i)
return(i)

print(func(3))


运行结果:
0
2

仍然图解一下,更直观

Python递归函数中,如何实现return语句的嵌套使用?

正确的解决方案一:

def func(i):
if i == 0:
print(i)
return i
elif i > -2:
i = i-1
return(func(i))

print(func(3))


运行结果:
0
0

正确的解决方案二:

result = None
def func(i):
if i == 0:
print(i)
global result
result = i
elif i > -2:
i = i-1
func(i)
return result

print(func(3))


运行结果:
0
0


本文共计467个文字,预计阅读时间需要2分钟。

Python递归函数中,如何实现return语句的嵌套使用?

在完成一道练习题时(参考下文篇目《在当前目录下递归查找包含指定字符串的文件》),发现函数中的return值竟然是None,令人困惑不解。尝试简化代码,如下所示,以验证结果:

在做一道练习题(参照下篇博文《在当前目录下递归的查找包含指定字符串的文件》)的时候,发现函数中的return的值竟然是None,百思不得其解,尝试化繁为简,用以下的简单的代码验证了一下

问题版本代码:为什么return i 返回的是 i , 而print(i)得到的是 0

def func(i):
if i == 0:
print(i)
return i
elif i > -2:
i = i-1
func(i)

print(func(3))


运行结果:
0
None

如果把递归过程画成流程图,或许更容易理解一些

case1: 有递归的情况

case2: 无递归的情况

错误的解决方案:

def func(i):
if i == 0:
print(i)
return i
elif i > -2:
i = i-1
func(i)
return(i)

print(func(3))


运行结果:
0
2

仍然图解一下,更直观

Python递归函数中,如何实现return语句的嵌套使用?

正确的解决方案一:

def func(i):
if i == 0:
print(i)
return i
elif i > -2:
i = i-1
return(func(i))

print(func(3))


运行结果:
0
0

正确的解决方案二:

result = None
def func(i):
if i == 0:
print(i)
global result
result = i
elif i > -2:
i = i-1
func(i)
return result

print(func(3))


运行结果:
0
0