数学で学習済みの方はご存知だと思いますが、nの階乗とは n~1までの数を掛けたもののことで、「n!」と表します。
例えば5の階乗は、5! = 5 × 4 × 3 × 2 × 1 = 120 となります。
階乗は、順列や組み合わせといった確率の分野でよく使われ、プログラムの問題でもよく登場します。
階乗の処理は合計処理に似ています。合計処理で足していく処理の部分を、掛けていく処理に代えるだけです。
ただ、合計の場合は合計結果の変数を0で初期化しましたが、階乗は掛け算なので、1で初期化することに注意してください。
0で初期化してしまうと、何を掛けても0になってしまいます・・・
下記は「入力値(0以上の整数)の階乗を求める」プログラムです。
階乗を求める(C)
#include <stdio.h>
int main(void){
int i, num, fact;
printf("0以上の整数を入力:");
scanf("%d", &num);
fact = 1;
for(i=1; i<=num; i++){
fact = fact * i;
}
printf("%d! = %d\n", num, fact);
return 0;
}
階乗を求める(Java)
import java.util.Scanner;
public class Factorial{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num, fact;
System.out.print("0以上の整数を入力:");
num = sc.nextInt();
fact = 1;
for(int i=1; i<=num; i++){
fact = fact * i;
}
System.out.println(num + "! = " + fact);
}
}
実行結果(例)
0以上の整数を入力:5
5! = 120
なお、1を掛ける行為は意味がないので、カウンタ i の初期値を2にして、2から掛けるようにしても結果は変わりません。
また、数学では0の階乗=1という決まりがあるのですが、このプログラムはそこもカバーできています。
あなたもジンドゥーで無料ホームページを。 無料新規登録は https://jp.jimdo.com から