Computer Transformation(5)
- Javaを超えるために
Cで実装する場合、2の累乗と3での除算という2種類の乗除はコードを長くするだけだ。ここで、第3回で書いたいくつかの式
これをもう一度よく見てみることにする。
特徴は正・負交互に2^nが並んでいて、最後は2^0だ。ここでそれぞれの式の、最終項(2^0)以外を2で括り出してみる。
これらと上の式を比較すれば、
という関係になっていることに気が付く。2^0=1なので、a_nを再び漸化式で表すと
以前作った漸化式
と比べると、2での乗算は共通としても、減算がから1 or -1になり圧倒的に計算しやすい。id:kurimuraさんはこれに一早く気付き、見事Java超えを果たした。というわけで、ここからはkurimuraさんのコードを追いかけつつ、最短コードのための超絶テクニックに迫ろうと思う。