ビューティフルコード (THEORY/IN/PRACTICE)
- 作者: Brian Kernighan,Jon Bentley,まつもとゆきひろ,Andy Oram,Greg Wilson,久野禎子,久野靖
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/04/23
- メディア: 大型本
- 購入: 30人 クリック: 617回
- この商品を含むブログ (171件) を見る
長く引っ張ったビューティフルコードの第三章も今日でオシマイ。例3-8は単純に置換。配列を使うようにするだけ。
#include <stdio.h> #include <stdlib.h> double t[100]; int main(void) { int i = 0; int n = 0; double sum; t[0] = 0; for( n = 1 ; n <= 20 ; n++ ){ sum = 0.0; for( i = 1 ; i <= n ; i++ ){ sum += n - 1 + t[i-1] + t[n-i]; } t[n] = sum/n; printf("n = %d , t[n] = %f\n",n,t[n]); } return 0; }
例3-9から例3-11はもう、そのまんま。対称性を使って計算量を減らしましょうというお話。最終的には配列すら使わずに
#include <stdio.h> int main(void) { double sum = 0.0; double t = 0.0; int n = 1; for( n = 1 ; n <= 30 ; n++ ){ sum += 2.0*t; t = n-1 + sum/n; printf("t = %f\n",t); } return 0; }
ってコードが導きだされる。
あれ?一番最初はクイックソートをやることではなかったっけ?って言うと、このソースの美しさは見えてこない。本当に解くべき問題は何かということを考え、それに従ってソースをどんどん変えていくのが本章の目的。そのことが分かるのは例3-6から例3-7の行間。ちょっと難しいし、分かりにくいのですけど。
とりあえず、これで第三章はオシマイ。他の章もちまちま読み進めよう。