柠檬冲冲冲 发表于 2021-8-11 16:26:44

递归

def outside():
    def inside():
      print('哈哈')
    return outside()

这段代码为什么说超过递归次数

def outside():
    def inside():
      print('哈哈')
    return outside
然后这段代码这样调用outside()()为什么返回
<function outside at 0x00000290E2ABCCA0>

大神们,这是什么意思啊,求救

      

   
   

      

   
   

逃兵 发表于 2021-8-11 16:32:48

递归得有终点,你这里会一直调用outside()函数

带括号的函数是执行函数,不带括号的函数是函数地址,这里返回到这个地址就结束了
<function outside at 0x00000290E2ABCCA0>

柠檬冲冲冲 发表于 2021-8-11 16:36:31

逃兵 发表于 2021-8-11 16:32
递归得有终点,你这里会一直调用outside()函数

带括号的函数是执行函数,不带括号的函数是函数地址,这 ...

怎样设置终点啊

2012277033 发表于 2021-8-11 16:39:00

逃兵 发表于 2021-8-11 16:32
递归得有终点,你这里会一直调用outside()函数

带括号的函数是执行函数,不带括号的函数是函数地址,这 ...

递归必须有结束条件,不然会一直执行下去,直到栈溢出,比如可以改成这样
def outside(count):
    if count<=0:
      return
    else:
      print('哈哈')
    return outside(count-1)

outside(3)

wp231957 发表于 2021-8-11 16:40:20

柠檬冲冲冲 发表于 2021-8-11 16:36
怎样设置终点啊

你不应该 return inside()或者inside   
你无穷调用外部自身想干嘛呢

柠檬冲冲冲 发表于 2021-8-11 16:42:26

2012277033 发表于 2021-8-11 16:39
递归必须有结束条件,不然会一直执行下去,直到栈溢出,比如可以改成这样

谢谢啦
页: [1]
查看完整版本: 递归