0

私は持っています:

(defun getTotalValue(pack)
  (cond ((null pack) 0)
    (t (+ (car (car pack)))) (getTotalValue (cdr pack))
  )
)

私の理解では、これはリスト内のアイテムの最初の要素をすべて合計します。テスト関数の呼び出しは次のようになります。

(getTotalValue '((10 c u) (3 s u) (5 h d) (7 s d) (12 h u)))

ただし、上記のコードを実行すると、リストの最初の項目の最初の要素のみが出力されます10。すべてのアイテムの最初の要素を合計しないのはなぜですか?

4

1 に答える 1

1

括弧の問題がありました。 の後に閉じ括弧が 2 つ間違って配置され(car (car pack))ているため、cond式はそこで終了し、再帰が発生しますが、結果は破棄されます。

(defun getTotalValue (pack)
 (cond ((null pack) 0)
       (t (+ (car (car pack)) (getTotalValue (cdr pack))))))
于 2012-09-26T02:05:16.093 に答える