我希望有一个以递归方式执行以下操作的函数
;f(n) = n, if n<4
;f(n) = f(n-1) + 2f(n-2) + 3f(n-3) + 4f(n-4)
这是我提出的,但它没有涵盖每次递归调用的乘法。我想知道如何使用Scheme
实现它(define (function n)
(= counter 0)
(if (< n 4)
n
(+ n (function (- n 1)))))
答案 0 :(得分:0)
您目前所写的内容是:
f(n) = n, if n<4
f(n) = n + f(n-1)
有一个不合适的,完全没用的(= counter 0)
语句只能返回#t
或#f
(如果在范围内没有定义计数器,这将产生运行时错误)。
以下代码将执行您尝试实现的目标。如果要将递归的数学定义转换为代码,则需要在代码中使用与数学定义中相同的递归函数调用(在本例中为4)。
(define (function n)
(if (< n 4)
n
(+ (* 1 (function (- n 1))) (* 2 (function (- n 2))) (* 3 (function (- n 3))) (* 4 (function (- n 4))))))