weixin_43347869 2021-12-09 22:55 采纳率: 0%
浏览 18

这段递归没看明白,求解释


def fun(n2):
    if n2 >0:
        fun(n2-1)
#        print(n2)
    print(n2)

n = 3
fun(n)
#print(n)
    

结果不应该是只有一个0吗,冒出来三个结果。而且第四行注释掉的那句输出语句在每次执行递归之后都会被执行一次,这是为什么呢,不应该是返回函数本身不执行这句代码吗

  • 写回答

2条回答 默认 最新

  • 技术专家团-Bamboo 2021-12-09 22:56
    关注

    这个程序是递归输出从0到n
    递归是先递进再归,递的时候不会输出,归的时候就输出了,所以执行递归之后会被执行
    第一次调用fun(3) : 3>0,递归调用fun(2):2>0,递归调用fun(1);1>0,递归调用f(0),0>0不满足,递归结束,依次返回,先执行fun(0)里面的输出,再执行fun(1)里面的输出;再执行fun(2)里面的输出,再执行fun(3)的输出

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月9日

悬赏问题

  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序
  • ¥15 错误于library(org.Hs.eg.db): 不存在叫‘org.Hs.eg.db’这个名称的程序包,如何解决?
  • ¥60 求一个图片处理程序,要求将图像大小跟现实生活中的大小按比例联系起来的
  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活