好了,回到我的previous question,我還在努力學習Haskell和解決從以下迭代尋找產業鏈最長的目前的問題:迭代函數和分析結果在Haskell
chain n | n == 0 = error "What are you on about?"
| n == 1 = [1]
| rem n 2 == 0 = n : chain (n `div` 2)
| otherwise = n : chain (3 * n + 1)
我有這一點排序,但我需要找到從1,000,000以下的起始數字中最長的鏈。那麼,如何讓每個起始數字達到1,000,000,然後打印鏈長最長的數字。 我可以用一個例子做:
Main> length (chain n)
我想我需要的輸出作爲一個數組,然後使用maximum
功能找到該值最大的鏈長,然後看看它是陣列中走多遠沿的答案。
這是尋找解決方案的好方法,還是有更好的方法(可能效率更高)?
項目歐拉吧? (問題14) – yairchu 2009-08-06 11:34:19
您可能想要爲此使用一些動態編程 - 讓鏈10重新使用已經計算的鏈3.爲此,您需要將結果存儲在中間數據結構中,如Map或一個數組 - 但它將需要較少的處理。 – rampion 2009-08-07 07:30:25