漸化式とプログラム
高校で学修する漸化式の内容はというと、例えば
のような漸化式から一般項,
さてこの漸化式をCのソースコードで書くと次のようになる*1
int a=1; while(1){ a= a*2 + 1; }
このコードで重要なことは変数 a に記録された値はループの各ステップで更新されてしまい、以前の値は永久に失われてしまうということ。あるいは一般項を n の関数として表現しなくてもいいこと。数値計算で実際に問題を解いた経験のある人には自明なことだが、漸化式は一般項を求めることを強制されているという洗脳を受けた人にプログラミングの講義をするときに、この部分は概念上のネックとなる。1回書けば直るけど。
*1:もちろんこのコードは無限ループであり、計算は int の表現領域を越えた時点で破綻する。手許の環境では実際に実行するとオーバーフローが起きた時点で -1 に飛んでしまい、そのまま値が固定される。それにこのコードは出力をしないので printf() などは各自で補う必要がある。