26.1.5.11 再帰の構造

問題の図形を

最初の "*"

中間の "**" から "**********" を経て "**" まで

最後の "*"

と分割してみましょう.そして,この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 の定義 */
}