2016-01-21 65 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) 
相關問題