鱼C论坛

 找回密码
 立即注册
查看: 1541|回复: 5

[已解决]递归

[复制链接]
发表于 2021-8-11 16:26:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

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

        

   
   

        

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

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

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

  7. outside(3)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-11 16:32:48 | 显示全部楼层
递归得有终点,你这里会一直调用outside()函数

带括号的函数是执行函数,不带括号的函数是函数地址,这里返回到这个地址就结束了
<function outside at 0x00000290E2ABCCA0>
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-11 16:36:31 | 显示全部楼层
逃兵 发表于 2021-8-11 16:32
递归得有终点,你这里会一直调用outside()函数

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

怎样设置终点啊

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-11 16:39:00 | 显示全部楼层    本楼为最佳答案   
逃兵 发表于 2021-8-11 16:32
递归得有终点,你这里会一直调用outside()函数

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

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

  7. outside(3)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-11 16:40:20 | 显示全部楼层

你不应该 return inside()  或者inside   
你无穷调用外部自身  想干嘛呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 08:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表