2017-01-21 4 views
1

Je lis SICP, et dans le premier chapitre mentionné le code comme ci-dessous:cann't exécuter du code « count changement » dans SICP

#lang scheme 
(define (count-change amount) 
    (cc amount 5)) 

(define (cc amount kind-of-coins) 
    (cond ((= amount 0) 1) 
     ((or (< amount 0) (= kind-of-coins 0)) 0) 
     (else (+ (cc amount 
        (- kind-of-coins 1)) 
       (cc (- amount 
         (first-denomination kind-of-coins)) 
        kind-of-coins))))) 

(define (first-denomination kinds-of-icons) 
    (cond ((= kinds-of-icons) 1) 
     ((= kinds-of-icons) 5) 
     ((= kinds-of-icons) 10) 
     ((= kinds-of-icons) 25) 
     ((= kinds-of-icons) 50))) 

(count-change 100) 

Je tapé le code à DrRacket, mais je ne peux pas courir avec succès, j'ai été essayé pendant une heure, ne sais pas ce qui ne va pas.

enter image description here

Répondre

2

Vous avez un problème avec first-denominations, le = a besoin de deux opérandes résultant de l'erreur de arité. Donc, il devrait ressembler à

(define (first-denomination kinds-of-icons) 
    (cond ((= kinds-of-icons 1) 1) 
     ...) 
+0

Thnaks beaucoup! Calme une erreur stupide ... TT – scriptboy