Scheme使用Pascal三角形的二项式函数

时间:2018-03-23 21:52:12

标签: scheme

假设binom过程返回一个函数,some_other_fieldsome_other_field二项式扩展中的第k个项。

这是我的代码。

((binom n) k a b)

我正在尝试修复binom功能。我认为公式是(a + b)^n。我应该如何在Scheme中编写它?

1 个答案:

答案 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)))