计算多项式函数[scheme / racket]

时间:2012-10-10 22:53:11

标签: scheme racket

我正在尝试编写一个尾递归函数poly,它将计算给定值和系数列表的多项式的值。如果,如果coeff是系数列表(a0, a1, a2,...an),则(poly x coeff)应计算值a0 + a1x +a2*x^2 + a3*x^3 + ...an*x^n

预计这些函数也会以线性时间(O(n))

运行

我对此的想法是创建一个辅助函数,它有一个额外的参数(acc),可以跟踪你在列表中的位置,这样你就知道将它提升到什么样的力量,但是我想不出如何那样做

1 个答案:

答案 0 :(得分:0)

不需要辅助函数来跟踪列表中的位置,因为您只需要一次向前移动一个列表元素,直到结束。这是一个可能的骨架

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

这大部分都是为你而做的。你真正需要做的就是弄清楚你应该如何计算指数和加法。有两个基本选项,我知道我会选择哪一个(更少的cpu周期)。