查看: 2086|回复: 8

"stack level too deep" 错误

  [复制链接]
头像被屏蔽
梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
回帖
2407

第1届Title华丽大赛新人奖

发表于 2008-5-11 23:10:14 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
梦石
1
星屑
12019
在线时间
4535 小时
注册时间
2005-10-22
回帖
7097

开拓者贵宾

发表于 2008-5-11 23:14:13 | 显示全部楼层
前者递归一层层挖下去内存有一些干活,一些保存上次的函数中断前内容...多了几次就没内存了..
后者跌代,内存专心干活不用存杂七杂八的东西...于是那么几次没关系
回复

使用道具 举报

冰

梦石
0
星屑
142
在线时间
264 小时
注册时间
2006-11-22
回帖
1010
发表于 2008-5-11 23:18:29 | 显示全部楼层
  def self.fact(numb)
    for i in 1...numb
      numb *=  i
    end
    return numb
  end


Math.fact(5132)


………{/fd}
回复

使用道具 举报

梦石
1
星屑
12019
在线时间
4535 小时
注册时间
2005-10-22
回帖
7097

开拓者贵宾

发表于 2008-5-11 23:21:49 | 显示全部楼层
以下引用3535于2008-5-11 15:18:29的发言:


def self.fact(numb)
   for i in 1...numb
     numb *=  i
   end
   return numb
end


Math.fact(5132)


………

这个...还是跌代...-_-0
回复

使用道具 举报

头像被屏蔽

冰

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-3-29
回帖
794
发表于 2008-5-11 23:32:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
回帖
2437

贵宾

发表于 2008-5-12 00:57:25 | 显示全部楼层
递归调用函数就会一直压栈...
而迭代等循环没有函数调用, 就不会压栈
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-6
回帖
55
发表于 2008-5-12 01:08:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

匿·蹤

梦石
0
星屑
65
在线时间
99 小时
注册时间
2006-3-19
回帖
404
发表于 2008-5-12 01:12:34 | 显示全部楼层
Ruby本来就是为了面向对象而产生的……
至于说它的递归弱……不如说它的内存应用效率不高……{/lh}
卐忍 → 解忍 → 元忍 → 隐忍 → 卍忍 → 匿踪(最终)
完全退步到了卐忍阶段
回复

使用道具 举报

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
回帖
2437

贵宾

发表于 2008-5-12 03:38:35 | 显示全部楼层
递归调用,先前的函数都没有结束   值当然在的咯, 不然怎么会压栈,先进后出
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部