このコードの断片に問題があります。これは、一部の計算機でnPrと呼ばれるものを計算するプログラムの一部です。エラーなしでコンパイルされますが、実行してn = 0に設定するたびに、一見無限のエラーメッセージのリストが表示されます。「エラー!」と印刷できないのはなぜですか。プログラムしたようにプログラムを終了しますか?
{
System.out.print("n = ");
int n = j.nextInt();
System.out.print("r = ");
int r = j.nextInt();
long n_fact = factorial(n);
if ( ( (n - r) <= 0 ) || (n <= 0) || (r < 0) )
{
System.out.println("Error!");
System.exit(0);
}
else
{
long nr_fact = factorial(n - r);
long nPr = n_fact / nr_fact;
NumberFormat f = NumberFormat.getNumberInstance();
System.out.println("nPr = " + f.format(nPr));
}
}