我想写一个算法来解决数学问题Σ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)
我想写一个算法来解决数学问题Σ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)
你得到undefined method 'n' for main object
的原因是因为您的代码认为n(n+1)
正在主要对象上调用n()
方法。在红宝石main
指的是顶层对象,它是Object
的情况下在任何情况下,解决你的问题实际上是乘以n * (n + 1)
而不是调用一个方法n
与参数n + 1
这是因为缺少*。试试这个解决方案:
def solver(n)
sum = 0
while n < 49
temp = n*(n+1)
n+=1
sum = sum + temp
end
return sum
end
puts solver(1)
你缺少一个用于乘法运算的'*' –
Ruby不能作为数学工作。 'n(n + 1)'让ruby认为你将n作为函数调用,其参数为n。试试'n *(n + 1)'(如@IsmailBadawi所说)。 – ytpillai
此外,作为一种良好的做法,您应该始终正确地缩进您的代码。 –