Не могу понять как факториал получился отрицательным.
taras anichin
Не могу понять как факториал получился отрицательным.
Почему моя программа (которая считает факториал) при вводе числа 21 выдает отрицательное число? Числа от 1 до 20 принимают положительные значения .
package com.company;
public class Main {
public static long factorial( int n ) {
if( n <=1 )
return 1;
else
return n * factorial( n - 1 );
}
public static void main(String[] args){
for( int i = 1; i <= 21; i++)
System.out.println( factorial(i) );
}
}
Ответы:
Jurijus Zaksas
Из-за переполнения. Не поместился твой факториал в long.
Рыжая Морда
замени long на BigInteger
https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html
|