Tôi đang làm việc cách của mình thông qua cuốn sách Haskell Graham Hutton, và trong chương đệ quy của mình, ông thường mô-trận đấu trên "n + 1", như trong:Tại sao thành ngữ đệ quy trong Haskell "'n + 1' và 'n'" và không phải là "'n' và 'n-1'"?
myReplicate1 0 _ = []
myReplicate1 (n+1) x = x : myReplicate1 n x
Tại sao điều đó và không phải là sau đây, (1) có vẻ giống hệt nhau về mặt chức năng và (2) trực quan hơn về sự hiểu biết những gì đang xảy ra với đệ quy:
myReplicate2 0 _ = []
myReplicate2 n x = x : myReplicate2 (n-1) x
có cái gì tôi đang thiếu ở đây? Hay nó chỉ là vấn đề về phong cách?
Nói cách khác, đó là vấn đề về kiểu và kiểu đầu tiên không còn được dùng nữa.:) –
Yup, chỉ cần chỉnh sửa nó trong :) – LukeN
Chúng không giống nhau. Các mẫu n + k sẽ không khớp với số âm. – sepp2k