我们需要编写一个与下面的过程相同的currying方法。
; Signature: c-bc(n)
; Type: [Number -> [Number -> Number]]
; Purpose: A naive Currying for binomial coefficient (n, k).
; Pre-conditions: n is a natural number
; Tests: ((c-bc 5) 3) => 10, ((c-bc 6) 2) => 15,
; ((c-bc 0) 0) => 1
(define c-bc
(lambda (n)
(lambda (k)
(/ (fact n)
(* (fact k)
(fact (- n k)))))))
我的解决方案:
(define c-bc
(lambda (n)
(let ((fact-n (fact n)))
(lambda (k)
(/ fact-n (* (fact k) (fact (- n k))))))))
是不是?我怎么能解释这是在讨论呢?
答案 0 :(得分:1)
是的,这是对的。将其解释为:"二项式系数函数采用两个参数n和k。我已经产生了一个cur函数,它返回了一个r函数来计算系数。 r的功能是优化的'因为只涉及n的计算是词法上绑定的。"