当使用递归时并有返回值时,调用自身函数时需要加上return语句如下:
def daxiao(biao1,biao2):
#判断两个列表的大小,根据里面的元素大小
#如果biao1大于biao2,返回1,
#如果biao1小于biao2,返回0
#如果两者相等,返回3
geshu1=len(biao1)
geshu2=len(biao2)
b1=int(biao1[0])
b2=int(biao2[0]) #这里只能比较数值大小,不能通过字符串直接比较大小
print(biao1)
print(biao2)
print(b1,b2,'d')
if b1>b2 :
print(b1,b2)
return 1
elif b1<b2 :
return 0
else:
if(geshu1==geshu2==1):
print('same name')
return 3
elif(geshu1==1 and geshu2>1):
return 0
elif(geshu1>1 and geshu2==1):
return 1
else:
# a=daxiao(biao1[-geshu1+1:],biao2[1-geshu2:])
# return a
#上面两句和这一句是等价的
return daxiao(biao1[-geshu1+1:],biao2[1-geshu2:])
这里的return必须要加上,不然返回值就是none,
因为调用函数时,是向里传输数据,不加return时,就没法往回传输数据。方法里的return只是跳出被调用的那一层函数,当调到最外层时,语句是在调用的函数那里,运行下去没有return就返回None。
所以必须在调用函数后加个return.要么像绿色的那样加两句,要么像红色的直接返回就好。
https://www.cnblogs.com/yechenkai/p/7143475.html