编写一个名为popadd的尾部递归函数,该函数在时间t=0时用P人建模人口,并每年添加d人。

(define (popadd t  P)
  (if (= t 0)
      P
  (+(popadd( - t 1) P)d))
)

但是,当然,我得到了一个还没有定义的错误,这是真的我试着把它作为一个输入,但是作为一个返回,我得到了D的数字。

最佳答案

您只需将另一个参数传递给递归:

(define (popadd t P d)
  (if (= t 0)
      P
      (+ d (popadd (- t 1) P d))))

或者您可以定义该值,以避免将其传递给其他人—假设它不需要更改:
(define d 100)

(define (popadd t P)
  (if (= t 0)
      P
      (+ d (popadd (- t 1) P))))

注意,如果可以的话,您可以对P执行同样的操作这实际上取决于程序的预期合同是什么。

10-04 11:43