java.lang.ArithmeticException:jruby中的负指数

java.lang.ArithmeticException:jruby中的负指数,第1张

我有以下JRuby代码:

def knuth(a, n, b)
   if n ==1
      r = a**b
   else
      r = 1
      b.times do
         r = knuth a, n-1, r
      end
   end
   return r
end
k = knuth 3, 4, 5
puts k
puts k.size

但它给了我

  

java.lang.ArithmeticException:负指数

任何想法为什么?

我在Windows上使用jruby-9.0.0.0.pre2-p0

最佳答案:

1 个答案:

答案 0 :(得分:1)

这里有两件事在起作用。首先,在JVM中,所有数字都已签名。因此,当r增长到足以使高阶位设置时,数字实际上变为负数,因此错误。第二件事是,每次通过b.times循环r时都会被重新分配,以便在下一次迭代中传递给r的{​​{1}}的值更大,导致knuth的新值再次大幅增加,依此类推,直到r变为负值。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复