この関数は CLisp 関数です。これは宿題の問題の一部ですが、この別の形式 (2 番目の関数) で記述されることになっています。
(defun range (m M) (cond
((> m M) '() )
((= m M) '() )
((< m M) (cons m (range (+ m 1) M ) ) )
)
)
(define (range m M) (cond
((> m M) '() )
((= m M) '() )
((< m M) (cons m (range (+ m 1) M ) ) )
)
)
これらは両方とも最小値 (m) と最大値 (M) を取り、最小値から最大値までの整数のリストを返す必要があります (最大値 / M-1 を除く)。
私はこれを何度も追跡しましたが、なぜNILを返すだけなのかわかりません。これは非常にばかげた論理の間違いに違いありません。
(range 1 4) => result (1 2 3)
m=1 | M=4 ==> return (cons 1 (2 3) )
m=2 | M=4 ==> return (cons 2 (3) )
m=3 | M=4 ==> return (cons 3 () )
m=4 | M=4 ==> return ()
v ^
---------/
私はそれを追跡するように、なぜこれが機能しないのかを理解しようとして夢中になっています。
繰り返しますが、関数を実行すると NIL になります。