次の属性を持つScheme関数があります。#fを無視して、ネストされたリスト構造のリーフノードの数をカウントします。再帰的な手順を使用します。
- 入力が空のリストの場合、これは0を返す基本ケースです。
- 入力が車がリストではないペアの場合:
- 車が#fの場合、cdrを繰り返して、それを返します。
- それ以外の場合は、車を1としてカウントし、それをcdrでの再帰の結果に追加します。
- 最後に、carとcdrの両方を繰り返し、それらを足し合わせます。
次のコードをプログラミング言語Clojureに変換するにはどうすればよいですか?
(define (x lis)
(cond ((null? lis) 0)
((not (list? (car lis)))
(cond
((eq? (car lis) #f) (x (cdr lis)))
(else (+ 1 (x (cdr lis))))))
(else (+ (x (car lis)) (x (cdr lis))))))