Python 为什么这个递归函数返回None?
这是我的密码:Python 为什么这个递归函数返回None?,python,python-3.x,Python,Python 3.x,这是我的密码: v = [1, 2, 3, 4, 5, 7] def con(v, i): if i == len(v) : return print("ok") con(v, i + 1) print(con(v, 1)) 以下是输出: ok None 有人知道我如何解决吗?您的代码会打印它,因为此代码的结果是print(打印(“确定”)并且调用print返回None。您需要返回的内容不是打印(“确定”) print返回None,您将返回prints
v = [1, 2, 3, 4, 5, 7]
def con(v, i):
if i == len(v) : return print("ok")
con(v, i + 1)
print(con(v, 1))
以下是输出:
ok
None
有人知道我如何解决吗?您的代码会打印它,因为此代码的结果是
print(打印(“确定”)
并且调用print返回None
。您需要返回的内容不是打印(“确定”)
print
返回None
,您将返回print
s结果return con(v,i+1)
,否则函数将返回None
con(v,1)
。
无需使用
print(con(v,1))
我理解您的问题,您希望递归获得向量的长度/转到向量的末尾。您需要将结果从最内部的递归循环返回到最外部的递归循环。因此,您需要返回内部结果:
v = [1, 2, 3, 4, 5, 7]
def con(v, i):
if i == len(v):
print("ok")
return i
return(con(v, i + 1))
print("Length of vector is: ",con(v, 1))
这将使:
ok
Length of vector is: 6
即使我删除了打印,结果也不会改变,这是因为您需要返回除
print(“ok”)
之外的内容,比如递归的结果。szdytom的回答很可能是你想要的。噢,ops,非常感谢你