天才少年Le 2023-06-30 03:06 采纳率: 63.6%
浏览 20

为什么是012345

img


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

  • 写回答

4条回答 默认 最新

  • 梦幻精灵_cq 2023-06-30 06:33
    关注

      这是函数自调用,就是“闭包”,也就是递归函数。递归函数有一个特性:就是可以保存每一次的递推值,返回阶段取出值。您的打印输出语句在自调用之后,是在返回阶段打印,到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) # 主函数调用。
    
    

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



    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月30日

悬赏问题

  • ¥15 delphi indy cookie 有效期
  • ¥15 Multisim基本共射放大器设计
  • ¥15 labelme打不开怎么办
  • ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
  • ¥15 免费的电脑视频剪辑类软件如何盈利
  • ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
  • ¥15 pycharm中导入模块出错
  • ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
  • ¥15 有关“完美的代价”问题的代码漏洞
  • ¥15 请帮我看一下这个简易化学配平器的逻辑有什么问题吗?