2017-04-25 11 views
0

この関数の目的は、lispを使用してリスト内の12の出現を数えることです。リスト内で1 2の出現をカウントするLisp関数

コードは、私が書いた:

(defun count12 (x) 
    (if (null x) 0 
     (if (and (= 1 (car x)) (= 2 (cadr x))) 
      (+ 1 (count12 (cdr x))) 
      (+ 0 (count12 (cdr x))) 
     ) 
    ) 
) 

私はそれを使用する場合には、エラーを生成:警告、

エラー(S)(S): *** - = :NILは数字ではありません

私はLispオンラインコンパイラを使用しています:rextester。あなたは、リストの最後の要素に到達すると

はあなたの助け&ガイド

+1

リストは1つの要素の長さであれば何? 2とnilを比較します – jenesaisquoi

+0

はいnull条件付きの条件を追加しました。どうもありがとうございます。 –

答えて

0

をありがとう、あなたは2nilnilcadrあるnil)を比較することがあります。

あなたはシングルトンリストをテストする必要があります。

(defun count12 (x) 
    (if (or (null x) (null (cdr x))) 
     0 
     (if (and (= 1 (car x)) (= 2 (cadr x))) 
      (+ 1 (count12 (cdr x))) 
      (+ 0 (count12 (cdr x)))))) 
+0

ありがとうございます。 –

関連する問題