エントリーの編集

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
以前書いたフィボナッチ数列のCPS変換について聞かれたので、改めて解説してみようと思う。 まずは普通... 以前書いたフィボナッチ数列のCPS変換について聞かれたので、改めて解説してみようと思う。 まずは普通の再帰版 ;; List.1 (define (fib n) (if (or (= n 1) (= n 2)) 1 (+ (fib (- n 1)) (fib (- n 2)))))この中で末尾再帰になっていない部分を取り出すと、 ;; list.2 (+ (fib (- n 1)) (fib (- n 2)))これは次のように等価変換できる。 ;; list.3 (let ((v1 (fib (- n 1)))) (+ v1 (fib (- n 2))));; List.4 ((lambda (v1) (+ v1 (fib (- n 2)))) (fib (- n 1)))後半が少し分かりにくいかもしれないけど、要するに ;; list.5 (define k (lambda (v1) (