問題の図形を
最初の "*"
中間の "**" から "**********" を経て "**" まで
最後の "*"
と分割してみましょう.そして,この2番目の処理を
最初の "**"
中間の "***" から "**********" を経て "***" まで
最後の "**"
と書いてみると,再帰の構造が見えてきます.つまり,表示すべき図形が上下対称であるという性質を利用して,最上行と最下行に同じ内容を表示し,その中間の部分を再帰処理として「下請け」に出せばいいのです.
class Dtri2{ public static void main(String argv[ ]){ dtri(1); } static void dtri(int p){ if(p==10) starline(10); else{ starline(p); dtri(p+1); starline(p); } } /* starline の定義 */ }
26.1.5.10 再帰の使用 | 26.1.5.11 再帰の構造 | 26.1.6 配列 | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Wed, 28 Apr 2004 15:50:53 JST (1920d) |