IEにおいて、[Math Processing Error] となって数式等が正しく表示されないときは、互換表示をOFFにすること!

階乗(factorial)の計算

 $n$個の異なる物を並べる並べ方の数は$n\times(n-1)\times\cdots\times 2\times 1$である。

 階乗を計算するプログラム(関数)を作成する

  仕様

  1. 負の整数が入力されるまで、キー入力された整数の階乗を計算し表示する

  作成

  1. 階乗を計算する関数 int fact( int n ); があるとして、
  2. まず、それを呼び出すプログラムを考え、
    /* 階乗を計算するプログラム */
    #include <stdio.h>
    
    main()
    {
    	int	fact( int n );
    	int	n;
    	
    	printf("階乗を計算します。負の数を入力すると終了します。\n");
    	for(;;) /* 無限ループ */
    	{
    		printf("Input a number: ");
    		scanf("%d", &n );
    		if( n < 0 )
    			break;
    		printf("%d! = %d\n", n, fact(n) );
    	}
    }
    
    /* 階乗を計算する関数 */
    int fact( int n )
    {
    	/* さーぁ考えよう! */
    
    }
    /* end of facti.c */
    
  3. 次に、その階乗を計算する関数について考えよう
 関数を色々な方法で実現してみよう!
  1. 1から順番にnまで掛けていく方法(ループ)
  2. nから順番に1まで掛けていく方法(ループ)
  3. 帰納的定義に沿って再帰呼び出しを使う方法

順列・組み合せの計算

 $n$個の物から$r$個取り出してを並べる並べ方(順列という)の数は、$_n{\rm P}_r$と書き、
$\displaystyle _n{\rm P}_r=n\times(n-1)\times\cdots\times(n-(r-1))=\frac{n!}{(n-r)!}$
で与えられる。 PはPermutation(順列)のPである。
 $n$個の物から$r$個の取り出し方(組み合わせという)の数は、$_n{\rm C}_r$と書き、
$\displaystyle _n{\rm C}_r=\frac{n\times(n-1)\times\cdots\times(n-(r-1))}{r!}=\frac{n!}{(n-r)!\,r!}$
で与えられる。 CはCombination(組合)のCである。

 順列・組合を計算する関数を作成する

/* 順列を計算する関数 */
int perm( int n, int r )
{
	/* さーぁ考えよう! */
}

/* 組合を計算する関数 */
int comb( int n, int r )
{
	/* さーぁ考えよう! */
}