Làm Y Combinator cho một hàm đối số duy nhất như thừa hoặc fibonacci trong Clojure cũng được ghi chép lại: http://rosettacode.org/wiki/Y_combinator#ClojureÁp dụng Y-Combinator vào một hàm đệ quy với hai đối số trong Clojure?
Câu hỏi của tôi là - làm thế nào để bạn làm điều đó cho một hàm hai lập luận như getter này cho ví dụ?
(Assumption ở đây là tôi muốn giải quyết vấn đề này một cách đệ quy và mã clojure phi thành ngữ này là có chủ ý vì lý do khác)
[phiên bản y-combinator phi]
(defn get_ [n lat]
(cond
(empty? lat)()
(= 0 (- n 1)) (first lat)
true (get_ (- n 1) (rest lat))))
(get_ 3 '(a b c d e f g h i j))
'(= 0 (- n 1))' thực sự là một cách công phu để nói '(= n 1)'. Tại sao dòng thứ tư và thứ năm thụt vào nhiều hơn thứ ba, bằng cách này? – Svante
Có lý do cụ thể nào để đặt chương trình này dựa trên cơ sở 1 không? – Svante