Hatena::ブログ(Diary)

闇忍日記 RSSフィード

■過去に作成したWindowsMobile6対応のソフトは公開を終了しました。(twitterにて @annin102 まで連絡いただければ再公開検討いたします)
■一部ソフト(小遣い帳ツール)の公開を再開しました。
公開場所→annin102.公開ファイル置き場

2010-02-12

展開処理

 A
 |
 +------+
 |      |
 B(2)   D(2)
 |      |
 |      +-------+
 |      |       |
 C(3)   E(1)    F(2)
 ()は、上の物に対して、いくつの割合か、を示す。

 こんな感じの構成があったとき、Aが5個だったらB-Fはそれぞれいくつ必要か?ってな数を求めるとき、今までは子の数を調べる、という処理を一個作って再帰で呼び出す、という方式で考えていた。

 A→B,B→C,A→D,D→E,D→Fとそれぞれ調べるって感じ。


 そういう方式でなくて、階層ごとにまとめて処理する、って方法を教えてもらい、ちょっと感心した。

 A→B,Dを調べる。 B→C,D→E,Fを調べると2回で処理するイメージ。

 この方式だと、まとめて処理できるので、DBアクセスが少なくて済むのが利点。


 物事を解決するにはいろいろな方法があるけども、私の頭は固いので、いろいろな発想で解決する、という方向には向かっていないようだ。特に最近はそう思う。

 不要に悩まなくて済む、という点ではメリットだけど、視点をもっと広くもちたいものだ。


 ちなみに、再帰の方はHash使うとかしていたせいか、速度的にはどちらも大差なかった。

 まあ、ボトルネックが他のところ(よばなくてはならない共通関数)にあるから、ってのもあるけど。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/annin102/20100212/1265991937