1

値と係数のリストを指定して多項式の値を計算する末尾再帰関数を作成しようとしています。poly同様に、coeff が係数のリストである場合(a0, a1, a2,...an)(poly x coeff)値を計算する必要があります。a0 + a1x +a2*x^2 + a3*x^3 + ...an*x^n

関数は線形時間 (O(n)) で実行されることも期待されます。

これについての私の考えは、リスト内のどこにいるのかを追跡する追加のパラメーター (acc) を持つヘルパー関数を作成することです。これにより、どのパワーに上げるかがわかりますが、その方法が思いつきません。

4

1 に答える 1

0

リストのどこにいるかを追跡するためのヘルパー関数は必要ありません。最後に到達するまで一度に 1 つのリスト要素を進めるだけでよいからです。これが可能なスケルトンです

(define (poly coeff)
  (let loop ((power 0) (total 0) (clist coeff))
    (cond
       ((null? clist) ???)
       (else (loop (+ 1 power) (??????) (cdr clist))))))

これでほとんどの作業は完了です。あなたが本当にしなければならないのは、指数と加算の計算をどのように行うべきかを考え出すことだけです. 2 つの基本的なオプションがあり、どちらを選択するかはわかっています (CPU サイクルが少ない)。

于 2012-10-10T23:40:10.030 に答える