私はCommonLispの初心者なので、Common Lisp(SBCL )を使用してSPOJの問題を解決しようとしました。最初の問題は、42番が見つかるまで数字を読み取るという単純な作業です。これが私の解決策です:
(defun study-num ()
(let ((num (parse-integer (read-line t))))
(when (not (= num 42))
(format t "~A~%" num)
(study-num))))
(study-num)
解決策は受け入れられます。しかし、結果の詳細を調べたところ、57MのMEMが使用されていることがわかりました。血まみれの無理ですが、理由がわかりません。最適化するにはどうすればよいですか?