26.1.5.10 再帰の使用

「三角形」を上下二つ合わせたような,次の図形を描いてみましょう.

*
**
***
...
****
*****
****
...
***
**
*

これは二重のfor形式を二つ合わせればOKです.

class Dtri{
 public static void main(String argv[ ]){
     int p;
     for(p=1; p<=10; p=p+1) starline(p);
     for(p=9; p>=1;  p=p-1) starline(p);
 }
 static void starline(int k){
     int i;
     for(i=1; i<=k; i=i+1)
         System.out.print('*');
     System.out.println();
 }
}

fileDtri.java

このメソッド starline は単純な反復ですから,次のように再帰を使っても書くことができます.

static void starline(int k){
   if(k>0){
      System.out.print('*');
      starline(k-1);
   }else{
      System.out.println();
  }
}

もっとプログラム全体にわたる再帰構造はないでしょうか.