2017-04-04 6 views
-1

数字のリスト(1、2、3 ...など)を対応する単語(1,2,3など)のリストに変換するプログラムを作成しようとしています... )。私は個々の数字を変換するヘルパー関数を書いた。これは次のようになります。ラケットの数字から単語への変換

(define (translate num) 
(cond [(= num 1) 'One] 
     [(= num 2) 'Two] 
     [(= num 3) 'Three] 
     [(= num 4) 'Four] 
     [(= num 5) 'Five] 
     [(= num 6) 'Six] 
     [(= num 7) 'Seven] 
     [(= num 8) 'Eight] 
     [(= num 9) 'Nine] 
     [(= num 0) 'Zero])) 

この機能は機能します。 '(1 2 3)のようなリストで呼び出す関数は、次のようになります。

(define (translate-digits aList) 
(cond [(empty? aList) '()] 
     [else (cons (translate (first aList)) 
        (translate (first (rest aList))))])) 

これは機能しません。私はそれが短所と関係していると思う。しかし、私が入力 '(1 3 5 7)を試してみると、私は得ます(One。Three)。どうしたの?

+1

私はデザインレシピを学ぶプログラムをデザインする方法をどのようにしていますか?もしそうなら、コードとテンプレートを比較する必要があります。それはあなたに何が間違っているか、それを修正する方法を示すべきです。 –

答えて

0

再帰を使用していないので、translate-digitsを呼び出して再帰を使用する代わりに、translate関数を2回呼び出すだけです。

お知らせわずかな違いは:あなたは空のリストをヒットし、空のリストを返すことによってアウト終了するまで

(define (translate-digits aList) 
(cond [(empty? aList) '()] 
     [else (cons (translate (first aList)) 
        (translate-digits (rest aList)))])) 

リストのresttranslate-digitsを呼び出すことによって、あなたは歩きます。

関連する問題