使用Scheme的递归函数以及如何步进两个计数器



我想要一个递归执行以下操作的函数

;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)))))

你目前写的是:

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))))))

最新更新