我試圖使用列表中的下列方法中的多個所有因素:爲什麼此Ruby代碼不會返回預期的答案?
def find_factors(n)
factors = []
2.upto(n-1) {|x| factors << x if n % x == 0}
end
factor = find_factors(24)
puts factor
其打印出以下幾點:
2
代替因素清單!如果做錯了,該怎麼辦?
我試圖使用列表中的下列方法中的多個所有因素:爲什麼此Ruby代碼不會返回預期的答案?
def find_factors(n)
factors = []
2.upto(n-1) {|x| factors << x if n % x == 0}
end
factor = find_factors(24)
puts factor
其打印出以下幾點:
2
代替因素清單!如果做錯了,該怎麼辦?
upto
與塊用於返回的接收裝置,2
。
一種更好的方式來寫,這將是:
def find_factors(n)
2.upto(n-1).select{|x| (n % x).zero?}
end
你必須在你find_factors
方法的最後返回factors
:
def find_factors(n)
factors = []
2.upto(n-1) {|x| factors << x if n % x == 0}
factors
end
呃! Facepalm :(對不起,浪費社區時間!!感謝您的快速響應! – TCSGrad
在Ruby中,只要您一個循環之前看到一個數組的初始化,通常可以將其轉換爲一個功能更強大的方法:
def find_factors(n)
2.upto(n-1).select{|x| n % x == 0}
end
這往往是更緊湊,往往更易讀。
更好,更優雅/慣用,或更快? – TCSGrad
如同更多的防錯 – sawa