階乗を求める再起関数

C:\DATA\Java2\Dos>java Factorial
3の階乗=6
4の階乗=24
5の階乗=120
 -- Press any key to exit (Input "c" to continue) --

再起関数(再起メソッド)を使って階乗を計算して印字します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして Factorial.java の名前で保存して下さい。
    //★階乗を求める再起関数     前田 稔
    class Factorial
    {
        public static void main(String args[])
        {
            System.out.println("3の階乗=" + Fact(3));
            System.out.println("4の階乗=" + Fact(4));
            System.out.println("5の階乗=" + Fact(5));
        }
    
        static int Fact(int n)
        {   if (n<=1)   return (1);
            return (Fact(n-1)*n);
        }
    }
    
  2. Factorial.java をコンパイルして class オブジェクトを実行して下さい。
    ページ先頭の画面が表示されたら完成です。

プログラムの説明

  1. 再起の考え方はとっつき難く、慣れるまで大変でしょうがその威力は抜群でぜひ身に付けたいものです。
    私の経験では「ループは全て再起」になり、完成したプログラムは非常にスマートです。 (^_^;
    再起にとりつかれると何でも再起で処理したくなりますが多用は禁物です。
    作成した本人はともかく、論理の流れが他人には非常にわかり難いのです。
  2. nの階乗とは「1〜n」の数を乗じた値です。
    例えば、3の階乗は「1*2*3=6」になります。
    またゼロの階乗は、1と定義されています。
  3. nの階乗を求める再起的な考え方は次のとおりです。
    1. Fact(n) が「nの階乗を求める関数(メソッド)」です。
    2. nが0か1のときは、解は1である。
    3. nが1以上のときは、Fact(n-1) にnを乗じた値が解である。
    この考え方をそのままプログラムすると再起関数が完成します。
  4. Fact 関数の中から Fact 関数を呼び出していることに注目して下さい。
    このように自分自身を呼び出す関数を「再起関数(recursive function)」と言います。 (^_^;)
    再起関数の詳しい説明は 前田稔の超初心者のプログラム入門 から 「C# Frame Work/再起関数」を参照して下さい。

超初心者のプログラム入門(Java2)