Tôi vừa mới học để tìm hiểu về một haskell và đã có thời gian khá tốt. Tôi đã làm việc thông qua một số vấn đề Project Euler để nắm bắt cú pháp và đã xem xét các giải pháp được đăng ở đây http://www.haskell.org/haskellwiki/Euler_problems/1_to_10 như một công cụ học tập. Mặc dù tôi đã tìm thấy bản thân mình không thể quấn quanh đầu tôi các giải pháp gửi cho problem #3:Haskell, tìm hiểu giải pháp cho euler # 3
-- Find the largest prime factor of 317584931803.
primes = 2 : filter ((==1) . length . primeFactors) [3,5..]
primeFactors n = factor n primes
where
factor n (p:ps)
| p*p > n = [n]
| n `mod` p == 0 = p : factor (n `div` p) (p:ps)
| otherwise = factor n ps
problem_3 = last (primeFactors 317584931803)
tôi không thể tìm ra cho cuộc sống của tôi như thế nào nó hoạt động. primes
và primeFactors
dường như đang gọi nhau để xây dựng danh sách của riêng họ và cố gắng theo dõi nó làm chua não tôi. Bất kỳ ai biết một bài đăng trên blog tốt về giải pháp này hoặc muốn viết một lời giải thích về nó ở đây?
Bạn đã thấy định nghĩa đệ quy của các số Fibonacci? 'fibs = 1: 1: zipWith (+) fibs (tail fibs)'? Bạn có hiểu điều đó không? Đó là một nơi tốt để bắt đầu với dữ liệu được xác định đệ quy. – rampion