假设binom过程返回一个函数,some_other_field
是some_other_field
二项式扩展中的第k个项。
这是我的代码。
((binom n) k a b)
我正在尝试修复binom功能。我认为公式是(a + b)^n
。我应该如何在Scheme中编写它?
答案 0 :(得分:1)
我认为你对公式感到困惑,你混淆了n,k,row和col。 我建议写下你想编程的公式,在纸上命名变量,然后用相同的变量名写出程序。
虽然有了binom,但我不确定你的意图是什么。 Binom返回一个lambda,这一切都很好。 但是在那个lambda中你做了一个递归调用binom, 又回来了一个lambda?然后在最后你基本上忽略了 你得到的结果并返回1? 在当前形式中,binom将永远不会返回除lambda或1之外的任何内容。
这就是我认为你想要的东西:
(define (pascal n k)
(cond ((< n k) (error "not defined: k > n"))
((= k 1) n)
((= k 0) 1)
((= n k) 1)
(else (+ (pascal (- n 1) (- k 1)) (pascal (- n 1) k)))))
(define (binom n i a b)
(* (pascal n i) (expt a (- n i)) (expt b i)))