Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么这个递归函数返回None?_Python_Python 3.x - Fatal编程技术网

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结果
  • 您忘记在第5行返回,它应该是
    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,非常感谢你