为什么是012345

img


函数结果为什么是012345,是fun套了fun还是说怎么样

  这是函数自调用,就是“闭包”,也就是递归函数。递归函数有一个特性:就是可以保存每一次的递推值,返回阶段取出值。您的打印输出语句在自调用之后,是在返回阶段打印,到0才开始打印,最后返回5。所以是012345。

  如果打印输出语句在“闭包调用”之前,第一次闭包调用前k值为5,第二次为4,……。所以是543210。



我仅会python,用python 代码给您演示下。
  • 打印输出语句在“闭包”调用之后

    img

  • python 代码

#!/sur/bin/nve python
# coding: utf-8


def fun(k):
    #print(k) # 打印
    
    if k > 0:
        fun(k-1) # 自调用。
        
    print(k) # 打印

if __name__ == '__main__':
    w = 5
    fun(w) # 主函数调用。


  • 打印输出语句在“闭包”调用之前

    img

  • python 代码
#!/sur/bin/nve python
# coding: utf-8


def fun(k):
    print(k) # 打印
    
    if k > 0:
        fun(k-1) # 自调用。
        
    #print(k) # 打印

if __name__ == '__main__':
    w = 5
    fun(w) # 主函数调用。

您可以点击下面的链接,了解更多闭包调用——



就是简简单单的递归啊!调用函数fun会调用内部的fun,直到不满足条件

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7463526
  • 以下回答由chatgpt基于相关博客总结生成:

    根据提供的参考资料,我们无法直接确定函数返回值为012345的原因。参考资料分别涉及了滤镜的算法、猜数字游戏的模块划分、随机数生成的方法、被调用函数的形参、字符数组的处理、负数在计算机中的表示等内容,与函数返回结果为012345并没有直接关联。

    在没有额外的代码示例和更多背景信息的情况下,无法确切知道函数返回结果为012345的原因。

img

当判断满足条件,则会优先执行函数,所以是 B