0

誰かがこのコードのエラーを表示できますか? 私は再帰に慣れていないので、以下のコードの何が問題なのかよくわかりません。

(define (counting lst)  
    (if (null? lst)
        '()
        (string-append (number->string (car (car lst))) 
                       ", " 
                       (number->string (length (cdr (car lst)))) 
                       (counting (cdr lst)))))

入力: '((2 b a) (1 f e c) (0 m))

コードから期待される出力:"2, 2\n1, 3\n0, 1\n"

上記のコードからの実際の出力:

string-append: contract violation
  expected: string?
  given: '()
  argument position: 4th
  other arguments...:
   "0"
   ", "
   "1"

私が理解しているように、

基本ケース: ネストされたリストの長さ = 0、または null の場合、'()

帰納的な場合: "," でネストされたリストの最初の数値と、ネストされたリストの残りの長さを追加します。

私の考えは正しいですか?そうでない場合、どこが間違っていますか?? 少し早いですがお礼を!

4

2 に答える 2

2

1 つには、結果は文字列である必要があります。あなたのベースベースでは、そうではありません。

別の場合、改行文字を追加することはありません。

于 2013-11-06T17:05:42.363 に答える