再帰を書けず愕然

今後再帰を書くためのメモ。

  • 再帰は大きな部分を小さな部分に分解しやすい場合に役立つ
    • 問題の範囲が広くなると複雑になる
  • 再帰は複雑さを克服することを可能にする
    • 迷路の経路探索
  • 無限再帰を避ける
    • 再帰を終了するための手段を用意する
  • スタックに注意
    • スタックオーバーフローする
  • 再帰はスタックと繰り返しで表現できる

間抜けでいないために

何をしようが間抜けは自分の足を撃つのだ。

Paul Graham(2004). ハッカーと画家 コンピュータ時代の創造者たち 川合史朗訳 (株)オーム社, P.207

なぜ銃で自分の足を撃ってしまうのか?

  1. 銃の扱い(どうすると弾が出るのか)を知らない
  2. 銃の仕組み(どこから弾が出るのか)を知らない
  3. 自分を傷つける可能性があることを知らない

では、優れた武器となる銃で、どうすれば自分を撃たなくて済むか。

  1. 銃の扱いを学ぶ
  2. 銃の仕組みを学ぶ
  3. 自分を傷つける可能性があるか確認する

これをプログラミングに当てはめると・・・

  1. 言語の扱い方とアルゴリズムの使い方を学ぶ
  2. 言語の仕組みとアルゴリズムの仕組みを学ぶ
  3. 言語の弱点、脆弱性アルゴリズムの副作用がないか確認する(あれば対策を学ぶ)