2017-10-10 3 views
0

Je voudrais avoir une fonction qui effectue les opérations suivantes récursivefonctions récursives avec le schéma et comment l'étape avec deux compteurs

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

C'est ce que je suis venu avec, mais il ne couvre pas la multiplication à chaque appel récursif. Je me demandais comment on pourrait mettre en œuvre que le schéma

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

Répondre

0

Ce que vous avez écrit actuellement est:

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

Avec une sur place, et la déclaration complètement (= counter 0) inutile qui ne peut retourner #t ou #f (Cela donnera une erreur d'exécution si le compteur n'est pas défini dans la portée).

Le code ci-dessous fera ce que vous essayez d'atteindre. Si vous voulez convertir une définition mathématique récursive en code, vous devez avoir autant d'appels de fonction récursifs dans le code que vous avez dans la définition mathématique (dans ce cas, 4).

(define (function n) 
    (if (< n 4) 
     n 
     (+ (* 1 (function (- n 1))) (* 2 (function (- n 2))) (* 3 (function (- n 3))) (* 4 (function (- n 4))))))