2017-10-10 48 views
0

我想有,做递归以下流程式递归函数以及如何与步骤两个计数器

;f(n) = n, if n<4 
;f(n) = f(n-1) + 2f(n-2) + 3f(n-3) + 4f(n-4) 

这是我想出了一个功能,但它不包括在每一个乘法递归调用。我不知道一个如何落实与方案

(define (function n) 
    (= counter 0) 
    (if (< n 4) 
     n 
     (+ n (function (- n 1))))) 

回答

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