私の関数は、最初の要素 (基本ケース) のみを返します。再帰が間違っているのかもしれませんし、lisp の関数について助けが必要なのかもしれません。
関数は、10 進数に変換されたバイナリ リスト内のすべての要素の合計を返す必要があります。リストの各要素を 10 進数の FIRST に変換し、変換されたときに残りを追加することにしました。私には2つの機能があります。最初の convertToBinary はうまく機能します:
(define (binaryToDecimal n)
(cond [(zero? n) 0]
[else (+ ( * 2 (binaryToDecimal (quotient n 10)))
(remainder n 10))]
))
2番目のものはあまり良くありません:
(define (addBinary binaryList)
(cond [(null? (cdr '(binaryList))) (binaryToDecimal (car binaryList))]
[else
(cons (+ (binaryToDecimal (car binaryList))
(addBinary (cdr '(binaryList)))))]
))
これで関数を呼び出すと:
(addBinary '(1101 111 10 101))
次に、13 を取得します。これは、1101 (リストの最初の要素) を 10 進数に変換したものです。明らかに問題は私のelse状態にあると思いますが、問題は見られず、助けを求めていました。私は周りを検索して、「cons」を使用すると、変更が適用されたリスト内の要素が(いわば)構築されることを読みました。これが正しいかどうかはわかりません。ありがとう!