Cまたはコラッツの問題

こんな関数 C が出てきた。

(define C
  (lambda (n)
    (cond
      ((one? n) 1)
      (else
        ((even? n) (C (o/ n 2)))
        (else (C (add1 (o* 3 n))))))))

これはコラッツの問題だ。
問答の答には「0に対しては値を持ちませんが、それ以外の引数に対して全関数であるかどうかは誰も知りません。ありがとう、Lother Collatz(1910~1990)。」と書いてある。もしコラッツの予想が正しければ全関数だということになるけど、まだ証明されていない。Wikipedia によれば、3 × 2 の53乗までは反例がないことが確かめられているとのこと。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください