编写一个名为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
执行同样的操作这实际上取决于程序的预期合同是什么。