所以我一直在試圖創建一個方法來顯示任何整數的素數的數組,作爲參數插入,但我一直在最奇怪的錯誤。任何人都可以解釋這個錯誤意味着什麼,以及如何使用任何寶石解決我的問題W/O?我試着看堆棧溢出,並沒有找到解決方案。謝謝!Ruby:當我使用遞歸來查找素數時出現錯誤
def prime_factors(num, output = [])
factor = (2..num-1).find(0){|divisor| num % divisor == 0} #returns nil if find fails.
output << factor if factor != 0
prime_factors(num/factor, output)
end
prime_factors(5)
我已經收到的錯誤是:
`find': undefined method `call' for 0:Fixnum (NoMethodError)
in `prime_factors'
in `<main>'
我看到...謝謝!我認爲'find'返回了'ifnone',爲其阻塞失敗,但通過ruby文檔回顧我發現ifnone是一個方法調用。感謝幫助! – Matt16749
我認爲最優雅的解決方案是在這種情況下給'find'沒有參數,所以它返回'nil'並將'factor'設置爲'0':factor =(2..num-1).find { |除數| num%divisor == 0} or 0' –
我同意給沒有參數將是一個優雅的解決方案,如果它的工作,但我遇到的問題是,我不能脅迫nil評估下一行輸出<< factor if factor!= nil'我得到以下錯誤:'nil不能被強制轉換成Fixnum(TypeError)' – Matt16749