ืืืื ื ืืืจ ืขื ืคืงืืืจืืืืืื ืืขื ืืืจืืื ืื ืคืืฆืืช ืืืืชืจ ืืืฆืื ืคืงืืืจืืืืืื. ืืืื ืืืช ืืคืื ืงืฆืืืช ืืืกืืกืืืช ืืืืชืจ ืฉืืชืื ืช ืฆืจืื ืื ืืืขืช ืืื ืืืืืช ืืกืืื ืืขืืื ืืืชื. ืืืื, ืืืื ื ืชืืื. ืืคืงืืืจืืืื ืฉื ืืืกืคืจ n, ืืืกืืื ื-n!, ืืื ืืขืจื ืฉื ืืืืคืื (ืืืคืื) ืฉื ืื ืืืกืคืจืื ืืืืขืืื ื-1 ืขื n. ืื ืื ื ืจืื (ืืืื ื ืจืขื ื ืืช ืืืืข ืฉืืื ืืืชืืืืงื):
1! = 1 2! = 1 * 2 = 2 3! = 1 * 2 * 3 = 6 4! = 1 * 2 * 3 * 4 = 24 5! = 1 * 2 * 3 * 4 * 5 = 120
ืืืฉ ืขืื ืืื ืงืื ืืื ืขืืืจ 0:
!0 = 1
ืื ืื ืื ื ืจืืฆืื ืืืฉื ืืช ืืืคืจืฉ ืืื 6! ื-4!:
6!-4! = 1โ
2โ
3โ
4โ
5โ
6 - 1โ
2โ
3โ
4 = 720 - 24 = 696
ืืื ื ืจืื ืืื ืื ืืืจืื ืืฉืืืืฉื ืืชืื ืืช. ื ืืงืืจ ืืื ืืจืืื ืืืฆื ืืืฆืข ืืืฉืืืื ืฉื ืคืงืืืจื ื-Java.
ืคืชืจืื ืจืืื ืืชืืื ืืช ืคืงืืืจืืืืืช
ืืืื ืชืืื ืืช ืคืงืืืจื ืคืฉืืื ืืืฉืชืืฉืช ืืืืืื:class FactorialExample{
public static void main(String args[]){
int i,fact=1;
int number=7;// our number to do the necessary calculations in class Factorial
for(i=1;i<=number;i++){
fact=fact*i;
}
System.out.println("Factorial of "+number+" is: "+fact);
}
}
ืืคืื ืฉืื ื ืืงืื ืกืืื ืืืื:
ืคืงืืืจ ืฉื 7 ืืื: 5040
ืืขืื ืืืืื ืืืช ืืกืืจ ืืืืจืื:
public static int getFactorial(int f) {
int result = 1;
for (int i = 1; i <= f; i++) {
result = result * i; // finding factorial of number using loops
}
return result;
}
ืืื ืืื ืฉืื ืืืจ ืงืฉื: ืื ื ืืฉืชืืฉืื ืืืกืคืจ ืฉืขืืจ ืืืืื ืืืืืื ืฉืื ื, ืฉืื ื ืืคืื ืืื ืืืกืคืจืื ืืงืืืืื ืขื ืฉื ืืืข ื-f. ืืืขืืงืจ:
System.out.println(getFactorial(6) - getFactorial(4));
ืืืืืงืช ืืงืื ืื ื ืจืืืื ืฉืื ื ืืงืืืื ืืช ืืชืืฆืื ืืจืฆืืื: 696.
ืคืชืจืื ืจืงืืจืกืืื
ืจืงืืจืกืื ืืชืจืืฉืช ืืืฉืจ ืฉืืื ืงืืจืืช ืืขืฆืื. ืฉืืื ืืื ื ืงืจืืช ืฉืืื ืจืงืืจืกืืืืช. ืืืื, ืืื ืืืจืื ืืฉื ื ืืืงืื:- ืชื ืื ืืกืืื - ืืืฉืจ ืืชื ืื ืืืกืืื ืืชืงืืื, ืืฉืืื ืฆืจืืื ืืืคืกืืง ืืงืจืื ืืขืฆืื ืืืืชืืื ืืืขืืืจ ืขืจืืื ืืืขืื. ืืืจื ืืื, ืื ืืื ืชื ืื ืืกืืื, ืื ืชืืื ืื ื ืืืืื ืืื ืกืืคืืช, ืืืฉืจ ืืฉืืื ืงืืจืืช ืืขืฆืื ืฉืื ืืฉืื ืขื ืฉื ืงืื StackOverflowError .
- ืื ืืฉื ื ืื ืืืืืืื ืฉืืืฆื ืืืจืฉ ืคืืืก ืงืจืืื ืจืงืืจืกืืืืช, ืืื ืขื ืขืจื ืงืื ืฉืื ื.
public static int getFactorial(int f) { // finding factorial of number using recursive solution
if (f <= 1) {
return 1;
}
else {
return f * getFactorial(f - 1);
}
}
ืชื ืื ืกืืื ืืจืงืืจืกืื ืฉืื ื ืืืื ืืฉื ืืืข ื-1. ืื ืืคืจืืืจ ืืื ื 1, ื ืืคืื ืืช ืืขืจื ืื ืืืื ืืชืืฆืื ืฉื ืืงืจืืื ืืจืงืืจืกืืืืช ืืืื ืืืชืืื (ืืืื ื ืขืืืจ ืืช ืืขืจื ืื ืืืื ืืื ืืก 1).
ืคืชืจืื ืขื ืืจื
ืื ืฉืื ืืืืจ ืืช ืคืื ืงืฆืืื ืืืืช ื-Stream ืฉื Java, ืื ืื ืื ืฉืจืืฆื ืืจืขื ื ืืช ืืืืืจืื ืฉืื, ืืจืืืื ืืงืจืืื ืขื ืืื .public static int getFactorial(int f) { // finding factorial of number using Stream
if (f <= 1) {
return 1;
}
else {
return IntStream.rangeClosed(2, f).reduce((x, y) -> x * y).getAsInt();
}
}
ืืื ืื ื ืืฉืชืืฉืื ืืืืืงื ืืืืืืืช IntStream , ืฉื ืืชื ืช ืื ื ืืืืืืช ื ืืกืคืืช ืืขืืืื ืขื ืืจื ืขืจืื int. ืืื ืืืฆืืจ ืืจื ืืื, ืื ื ืืฉืชืืฉืื ืืฉืืืช rangeClosed ืืกืืืืช ืฉืื , ืืืืืฆืจืช ืขืจืืื ื-2 ืขื f, ืืืื, ืืืจืืืืื ืฉื 1. ืืืืจ ืืื, ืื ื ืืฉืชืืฉืื ืืฉืืืช reduce ืืื ืืฉืื ืืช ืื ืืขืจืืื. ืืืชืจ ืืืืง, ืื ื ืืจืืื ืืืฆื ืื ื ืจืืฆืื ืืฉืื ืืื ืืขืจืืื. ืืืกืืฃ, ืื ื ืืงืืืื ืืช ืืขืจื ืืืชืงืื ืืืืฆืขืืช ืฉืืืช ืืืกืืฃ getAsInt .
ืฉืืืืฉ ื-BigInteger
ื-Java, ืืืืืงื BigInteger ืืฉืืฉืช ืืขืชืื ืงืจืืืืช ืืืืคืื ืืืกืคืจืื, ืืืืืื ืืืกืคืจืื BIG. ืืืื, ืื ืื ื ืืฉืชืืฉืื ื-int , ืื ืืคืงืืืจืืื ืืืงืกืืืื ืฉื ืืื ืืืชืืืื ืืืชื ืืื ืืืืื ื ืชืื ืื ืืื 31. ืขืืืจ ืกืื ืื ืชืื ืื ืืืจืื , ืืคืงืืืจืืื ืืืงืกืืืื ืืื 39. ืืื ืื ืื ืื ืื ื ืฆืจืืืื ืืช ืืคืงืืืจืืื ืฉื 100? ืืืื ื ืชืืื ืืช ืืคืชืจืื ืืช ืืงืืืืื ื-BigInteger.ืคืชืจืื ืจืืื
public static BigInteger getFactorial(int f) { // finding factorial of number using BigInteger
BigInteger result = BigInteger.ONE;
for (int i = 1; i <= f; i++)
result = result.multiply(BigInteger.valueOf(i));
return result;
}
ืืืืืืจืืชื ืืขืฆื ืืื, ืืื ืืื ืื ื ืืฉืชืืฉืื ืืืืืืืช ืฉื BigInteger: BigInteger.ONE ืืื ืืขืจื ืืืชืืืชื 1, ื- multiply() ืืฉืืฉ ืืืืคืืช ืืขืจื ืืคืงืืืจืืืื ืืงืืื ืืืืกืคืจ ืื ืืืื.
ืคืชืจืื ืจืงืืจืกืืื
public static BigInteger getFactorial(int f) {
if (f <= 1) {
return BigInteger.valueOf(1);
}
else {
return BigInteger.valueOf(f).multiply(getFactorial(f - 1));
}
}
ืืืืืืื ืืืืื ืฉื ืืคืชืจืื ืืื ื ืืฉืชื ื, ืคืจื ืืื ืฉืืชืืืกืคืืช ืืื ืฉืืืืช ืืขืืืื ืขื BigInteger.
ืคืชืจืื ืขื ืืจื
public static BigInteger getFactorial(int f) {
if (f < 2) {
return BigInteger.valueOf(1);
}
else {
return IntStream.rangeClosed(2, f).mapToObj(BigInteger::valueOf).reduce(BigInteger::multiply).get();
}
}
ืืื ืืขืฆื ืืืชื ืืืจ, ืืื ืขื BigInteger. ืืืืืงื Stream ื ืืชื ืช ืื ื ืืช ืฉืืืช mapToObj , ืฉืื ืื ื ืืฉืชืืฉืื ืืื ืืืืืจ ืขืจืื int ื-BigInteger ืขื ืื ืช ืืืืคืื ืืืชื ืขื ืขืฆืื ืืืืฆืขืืช ืฉืืืช multiply (ื- get() ื ืืกืคื ืืื ืืงืื ืืืืืืงื ืืืขืืืคื Optional
). ืื ื ืจืืฅ ืืืช ืืฉืืืฉ ืืฉืืืืช ืืืื ืขื ืืจืืืื ื ืฉื 100, ืื ื ืื ืข ืืืืืฉื ืฉื ืืืกื ืืช ืื ืงืื ืืช ืืชืืฆืื ืื ืืื ื:
933262154443944152681699238856266700490715968264381621468592963895217599993229915608941463976272528376272527252725272525272527252527252527252525252525252525252525252525252525252725 1185210916864000000000000000000000000
GO TO FULL VERSION