【Python】python的递归中return返回none
代码:
#求最大公约数 def gcd(x,y): if x < y: swap = x x = y y = swap if x%y == 0: return y else: gcd(y,x%y) print(gcd(10,20)) print(gcd(20,15))
输出结果:
10 None
如果将return y替换成print(y),是可以正确输出结果的。
查阅了网上的文章,有说是在递归的每一个分支都需要给出一个return,于是将代码改为:
def gcd(x,y): if x < y: swap = x x = y y = swap if x%y == 0: return y else: return (gcd(y,x%y)) #只改动了此行 print(gcd(10,20)) print(gcd(20,15))
分析:
(1)return的作用是将函数结果返回,即退出def函数模块。
(2)当函数没有显式return,默认返回none。
(3)最后得出的分析过程是(以gcd(20,15)为例),第一次调用的时候,执行了gcd(15,5),那么此时gcd(15,5)return的值,是给到第一次调用那里的,而第一次调用没有显式return语句,于是return的就是none。