ruby while循环中'n'的未定义方法

时间:2016-01-21 02:53:25

标签: ruby

我正在尝试编写一个算法来解决n(n + 1)中的数学问题Σn= 1到49。我一直收到错误“主要对象的未定义方法'n'

def solver(n)
  sum = 0
  while n < 49
    temp = n(n+1)
    n+=1
    sum = sum + temp
  end
  return sum
end

puts solver(1)

3 个答案:

答案 0 :(得分:1)

而不是:

temp = n(n+1)

放:

temp = n*(n+1)

答案 1 :(得分:1)

您获得undefined method 'n' for main object的原因是因为您的代码认为n(n+1)正在主要对象上调用n()方法。在ruby中main指的是顶级对象,它是Object

的一个实例

在任何情况下,问题的解决方案实际上都会乘以n * (n + 1),而不是使用参数n调用方法n + 1

答案 2 :(得分:0)

这是因为缺少*。试试这个解决方案:

def solver(n)
  sum = 0
  while n < 49
    temp = n*(n+1)
    n+=1
    sum = sum + temp
  end
  return sum
end

puts solver(1)