これに対する出力に明らかなパターンがあることを認識しています.52を超えるものを実行しようとすると、lispboxのREPLが中止される理由を知りたいだけです.また、コードを改善するための提案は大歓迎です. ^-^
(defun count-reduced-fractions (n d sum)
(setf g (gcd n d))
(if (equal 1 d)
(return-from count-reduced-fractions sum)
(if (zerop n)
(if (= 1 g)
(count-reduced-fractions (1- d) (1- d) (1+ sum))
(count-reduced-fractions (1- d) (1- d) sum))
(if (= 1 g)
(count-reduced-fractions (1- n) d (1+ sum))
(count-reduced-fractions (1- n) d sum)))))
私が電話するときに私が得るすべて
(count-reduced-fractions 53 53 0)
は
;評価は中止されました
それより下のすべての数値で実行され(そして正確な結果が返される)、頭、紙、または1行で(必要に応じて)53を実行できることを考えると、私にはあまり意味がありませんLispで一度に。53 に固有のものではないことを確認するために、53 より大きいさまざまな数値でテストしました。何も機能しません。