Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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递归函数,在if语句中返回_Python_Function_Api_Recursion - Fatal编程技术网

Python递归函数,在if语句中返回

Python递归函数,在if语句中返回,python,function,api,recursion,Python,Function,Api,Recursion,我目前正试图用python开发一个递归函数,但在尝试调用return语句时遇到了问题 作为一个虚拟示例,我编写了一个简单的函数(如下所示)。当我使用默认参数运行这个函数时,我可以看到它确实会先执行“else”语句好几次,然后在达到“if”单元格条件时停止(所以似乎执行了“return”,对不对?) 但是,如果我检查return参数,似乎返回了None参数 问:从这个递归函数中导出“counter”值的正确方法是什么 我试过的想法和事情: 我的第一个想法是“印刷”声明应该受到谴责。然而,移除它们

我目前正试图用python开发一个递归函数,但在尝试调用return语句时遇到了问题

作为一个虚拟示例,我编写了一个简单的函数(如下所示)。当我使用默认参数运行这个函数时,我可以看到它确实会先执行“else”语句好几次,然后在达到“if”单元格条件时停止(所以似乎执行了“return”,对不对?)

但是,如果我检查return参数,似乎返回了None参数

问:从这个递归函数中导出“counter”值的正确方法是什么

我试过的想法和事情:

  • 我的第一个想法是“印刷”声明应该受到谴责。然而,移除它们并不能解决问题
  • 反转if和else语句也不起作用,并调用了相同的行为
  • 函数在10次运行后停止这一事实意味着达到了“return”语句。另一个想法可能是,这是一个“范围界定问题”。然而,将“计数器”移到函数外并不起作用,因为它会产生引用错误

用例:使用此函数可以自动展开分页的API响应。

尝试以下操作:

def recursive_count(counter=1):
    if counter >=10:
        print("Final count reached.")
        return counter
    else:
        print("increasing counter.")
        counter += 1
        return recursive_count(counter=counter)
我将在评论中回答您的问题。

试试以下方法:

def recursive_count(counter=1):
    if counter >=10:
        print("Final count reached.")
        return counter
    else:
        print("increasing counter.")
        counter += 1
        return recursive_count(counter=counter)

我将在评论中回答您的问题。

只需在递归调用前添加
return

return recursive_count(counter=counter)

只需在递归调用前面添加
return

return recursive_count(counter=counter)

else块中缺少一个返回值:
return recursive\u count(counter=counter)
问题的重复:else块中缺少一个返回值:
return recursive\u count(counter=counter)
问题的重复:顺便说一句,如果if/else在if中有返回值,else线路变得多余。顺便说一句,它只是一个“btw”。这只是一个代码风格的东西,它降低了代码的复杂性。顺便说一句,如果if/else中有一个返回,那么else行将变得多余。它只是一个“顺便说一句”。这只是一种代码风格,它降低了代码的复杂性。