我想寫一個算法來解決數學問題Σ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
此外,作爲一種良好的做法,您應該始終正確地縮進您的代碼。 –