- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试解决这个问题http://www.nattee.net/~dae/algo/prob/hw03b_tiling/problem.pdf
所以我使用分而治之的方法来解决它但是当我执行我的程序时我得到了
tile.rb:7: stack level too deep (SystemStackError)
这是我的代码
def tile (x, y, bx, by, ex, ey)
mx = (bx+ex)/2
my = (by+ey)/2
if (by<=y && y<=my)
if (bx<=x && x<=mx) # top-left
puts "0 #{mx} #{my}"
elsif (mx+1<=x && x<=ex) # top-right
puts "1 #{mx} #{my}"
end
elsif (my+1<=y && y<=ey)
if (bx<=x && x<=mx) # bottom-left
puts "2 #{mx} #{my}"
elsif (mx+1<=x && x<=ex) # bottom-right
puts "3 #{mx} #{my}"
end
end
tile(x,y,bx,by,mx,my) #top-left
tile(x,y,mx+1,by,ey,my) #top-right
tile(x,y,bx,my+1,mx+1,ey) #bottom-left
tile(x,y,mx+1,my+1,ex,ey) #bottom-right
if ex-bx == 2 && ey-by == 2 then return end
end
temp = []
gets.chomp.strip.split(" ").each do |item|
temp << item.to_i
end
L = temp[0]
x = temp[1]
y = temp[2]
tile(x,y,0,0,L-1,L-1)
我找不到原因。
最佳答案
没有办法摆脱你的递归 - 每次调用 tile
,它都会再调用 4 次 tile
。递归在递归调用之前总是需要一个“泄压阀”出路。尝试在 tile
调用之前将您的 return
上移。
return 语句可以用更惯用的 ruby 编写。
尝试:
return if (ex-bx == 2 && ey-by == 2)
关于 ruby : stack level too deep (SystemStackError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25849100/
我知道这里有很多系统堆栈错误问题……但每个问题和答案都是独一无二的。还没有找到一个接近我的。 我真的不明白为什么会出现这个错误... 我不需要 View ,因为表单是通过 ajax 发送的。我用 Ra
我想做这个简单的计算,但它提示堆栈不够深,即使对于 n 的非常小的数字(例如 4)也是如此。类似主题的其他 SO 帖子推荐尾递归,但是这在这里不适用,因为您只在达到基本情况时才添加到累积值。 Ruby
我有 Sinatra 应用程序,需要测试我的应用程序。 features/support/env.rb: require_relative "../../application" require "c
我有以下代码: class BookPrice attr_accessor :price def initialize(price) @price = price end de
我正在开发一个 android 应用程序,我需要有一个关于已保存对象的显示 View 的 json 响应。尝试这样做,我收到: "SystemStackError (stack level too d
这是我的代码。 @@inversions = 0 numbers = [very big array] def merge_sort(array) return array if array.si
我正在研究一种新的编程语言 rip ,而且我无法找到一些无限循环的底部。有没有办法在每个规则被调用时打印出来,这样我就可以看到递归的规则?我试过在脑海中遍历代码,但我就是看不到它。任何帮助将不胜感激。
不确定为什么会这样??还是菜鸟.. 我只是在保存记录之前更新 Mine 表中的一个字段。所有变量都被准确地引入了。下面的行也返回了它应该的内容。 CreateFulfillmentService::N
我有很多范围,如果它们重叠,我想合并在一起。我目前使用的方法是使用 Sets。 这是有效的。但是,当我尝试使用如下更大范围的相同代码时,我得到一个“堆栈级别太深(SystemStackError)”。
我尝试解决这个问题http://www.nattee.net/~dae/algo/prob/hw03b_tiling/problem.pdf 所以我使用分而治之的方法来解决它但是当我执行我的程序时我得
所以我正在尝试创建 vagrantfile 循环并为学校项目创建多台机器。 代码是: def slave() slave{i} end Vagrant.configure(2) do |confi
删除记录时出现堆栈溢出错误: SystemStackError (stack level too deep): app/controllers/orders_controller.rb:18:in `
我正在尝试向 Numeric 类添加转换方法,但是当我运行以下代码行时,我得到了 SystemStackError puts 5.dollars.in(:euros) # => 6.5 puts 1
我试图理解为什么将许多(在我的例子中是 130798 个)对象放入数组中会返回 SystemStackError。 big = Array.new(130797, 1) [].push(*big) &
Ruby 在 Cygwin 中的 rails 和 bundler 崩溃。 $ ruby -v ruby 1.9.3p374 (2013-01-15 revision 38858) [i386-cygw
不明白为什么我运行这个程序时堆栈级别太深。 module A class Fruit def initialize puts "pears" end
所以我试图在 ruby 中实现快速排序,但我得到了这个错误 `quicksort': stack level too deep (SystemStackError) def quicksort(a
下面是我的示例代码: def test(v) test(v-1) if v > 0 p v end 如果我调用 test(11893) 它工作正常。如果我有 v > 11893,它会抛出 Sy
当我在程序中对其进行测试时,我的代码将运行,但是当我尝试在该代码上运行Rspec时,它将引发错误 rails--version Rails 5.2.3 ruby --version ruby 2.6.
我有一个表单,当用户在文本字段中输入某些值时,我想自动填充其他字段,但它不断返回 SystemStackError (堆栈级别太深)。这是文件: 路线.rb scope :places, contro
我是一名优秀的程序员,十分优秀!