2016-01-21 26 views
-2

我想写一个算法来解决数学问题Σn = 1至49的n(n + 1)。我不断收到一个错误 “为主要对象的未定义的方法 'N'”未定义的方法'n'红宝石while循环

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

puts solver(1) 
+0

你缺少一个用于乘法运算的'*' –

+5

Ruby不能作为数学工作。 'n(n + 1)'让ruby认为你将n作为函数调用,其参数为n。试试'n *(n + 1)'(如@IsmailBadawi所说)。 – ytpillai

+0

此外,作为一种良好的做法,您应该始终正确地缩进您的代码。 –

回答

1

相反的:

temp = n(n+1) 

地说:

temp = n*(n+1) 
+2

“Insted”需要改为“改为”。 2000年downvotes。 :P – ytpillai

1

你得到undefined method 'n' for main object的原因是因为您的代码认为n(n+1)正在主要对象上调用n()方法。在红宝石main指的是顶层对象,它是Object

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

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) 
相关问题