非负整数的阶乘是所有小于或等于n的整数的乘积。例如,6的阶乘是6*5*4*3*2*1,即720。
null
递归解决方案: 阶乘可以使用以下递归公式计算。
n! = n * (n-1)! n! = 1 if n = 0 or n = 1
下面是factorial的实现。
C++
// C++ program to find factorial of given number #include <iostream> using namespace std; // function to find factorial of given number unsigned int factorial(unsigned int n) { if (n == 0) return 1; return n * factorial(n - 1); } // Driver code int main() { int num = 5; cout << "Factorial of " << num << " is " << factorial(num) << endl; return 0; } // This code is contributed by Shivi_Aggarwal |
C
// C program to find factorial of given number #include <stdio.h // function to find factorial of given number unsigned int factorial(unsigned int n) { if (n == 0) return 1; return n * factorial(n - 1); } int main() { int num = 5; printf ( "Factorial of %d is %d" , num, factorial(num)); return 0; } |
JAVA
// Java program to find factorial of given number class Test { // method to find factorial of given number static int factorial( int n) { if (n == 0 ) return 1 ; return n * factorial(n - 1 ); } // Driver method public static void main(String[] args) { int num = 5 ; System.out.println( "Factorial of " + num + " is " + factorial( 5 )); } } |
Python3
# Python 3 program to find # factorial of given number # Function to find factorial of given number def factorial(n): if n = = 0 : return 1 return n * factorial(n - 1 ) # Driver Code num = 5 ; print ( "Factorial of" , num, "is" , factorial(num)) # This code is contributed by Smitha Dinesh Semwal |
C#
// C# program to find factorial // of given number using System; class Test { // method to find factorial // of given number static int factorial( int n) { if (n == 0) return 1; return n * factorial(n - 1); } // Driver method public static void Main() { int num = 5; Console.WriteLine( "Factorial of " + num + " is " + factorial(5)); } } // This code is contributed by vt_m |
PHP
<?php // PHP program to find factorial // of given number // function to find factorial // of given number function factorial( $n ) { if ( $n == 0) return 1; return $n * factorial( $n - 1); } // Driver Code $num = 5; echo "Factorial of " , $num , " is " , factorial( $num ); // This code is contributed by m_kit ?> |
Javascript
<script> // Javascript to find factorial // of given number // function to find factorial // of given number function factorial(n) { if (n == 0) return 1; return n * factorial(n - 1); } // Driver Code let num = 5; document.write( "Factorial of " + num + " is " + factorial(num)); // This code is contributed by Saurabh Jaiswal </script> |
输出:
Factorial of 5 is 120
迭代解决方案: 阶乘也可以迭代计算,因为递归对于大数来说代价高昂。这里我们展示了使用for和while循环的迭代方法。 使用For循环
C++
// C++ program for factorial of a number #include <iostream> using namespace std; // function to find factorial of given number unsigned int factorial(unsigned int n) { int res = 1, i; for (i = 2; i <= n; i++) res *= i; return res; } // Driver code int main() { int num = 5; cout << "Factorial of " << num << " is " << factorial(num) << endl; return 0; } // This code is contributed by Shivi_Aggarwal |
C
#include <stdio.h> // function to find factorial of given number unsigned int factorial(unsigned int n) { int res = 1, i; for (i = 2; i <= n; i++) res *= i; return res; } int main() { int num = 5; printf ( "Factorial of %d is %d" , num, factorial(num)); return 0; } |
JAVA
// Java program to find factorial of given number class Test { // Method to find factorial of the given number static int factorial( int n) { int res = 1 , i; for (i = 2 ; i <= n; i++) res *= i; return res; } // Driver method public static void main(String[] args) { int num = 5 ; System.out.println( "Factorial of " + num + " is " + factorial( 5 )); } } |
Python3
# Python 3 program to find # factorial of given number # Function to find factorial of given number def factorial(n): res = 1 for i in range ( 2 , n + 1 ): res * = i return res # Driver Code num = 5 ; print ( "Factorial of" , num, "is" , factorial(num)) # This code is contributed by Smitha Dinesh Semwal |
C#
// C# program to find // factorial of given number using System; class Test { // Method to find factorial // of given number static int factorial( int n) { int res = 1, i; for (i = 2; i <= n; i++) res *= i; return res; } // Driver method public static void Main() { int num = 5; Console.WriteLine( "Factorial of " + num + " is " + factorial(5)); } } // This code is contributed by vt_m |
PHP
<?php // function to find factorial // of given number function factorial( $n ) { $res = 1; $i ; for ( $i = 2; $i <= $n ; $i ++) $res *= $i ; return $res ; } // Driver Code $num = 5; echo "Factorial of " , $num , " is " , factorial( $num ); // This code is contributed // by anuj_67. ?> |
Javascript
<script> // JavaScript program to find factorial of given number // Method to find factorial of the given number function factorial(n) { var res = 1, i; for (i = 2; i <= n; i++) res *= i; return res; } // Driver method var num = 5; document.write( "Factorial of " + num + " is " + factorial(5)); // This code is contributed by shivanisinghss2110. </script> |
输出:
Factorial of 5 is 120
使用While循环
C
// C program for factorial of a number #include <stdio.h> // function to find factorial of given number unsigned int factorial(unsigned int n) { if (n == 0) return 1; int i = n, fact = 1; while (n / i != n) { fact = fact * i; i--; } return fact; } int main() { int num = 5; printf ( "Factorial of %d is %d" , num, factorial(num)); return 0; } |
C++
// C++ program for factorial of a number #include <iostream> using namespace std; // function to find factorial of given // number using while loop unsigned int factorial(unsigned int n) { if (n == 0) return 1; int i = n, fact = 1; while (n / i != n) { fact = fact * i; i--; } return fact; } // Driver code int main() { int num = 5; cout << "Factorial of " << num << " is " << factorial(num) << endl; return 0; } // This code is contributed by Shivi_Aggarwal |
JAVA
// Java program to find factorial of given number class Test { // Method to find factorial of the given number static int factorial( int n) { if (n == 0 ) return 1 ; int i = n, fact = 1 ; while (n / i != n) { fact = fact * i; i--; } return fact; } // Driver method public static void main(String[] args) { int num = 5 ; System.out.println( "Factorial of " + num + " is " + factorial( 5 )); } } |
Python3
# Python 3 program to find # factorial of given number # Function to find factorial of given number def factorial(n): if (n = = 0 ): return 1 i = n fact = 1 while (n / i ! = n): fact = fact * i i - = 1 return fact # Driver Code num = 5 ; print ( "Factorial of" , num, "is" , factorial(num)) # This code is contributed by Smitha Dinesh Semwal |
C#
// C# program to find // factorial of given number using System; class Test { // Method to find factorial // of given number static int factorial( int n) { if (n == 0) return 1; int i = n, fact = 1; while (n / i != n) { fact = fact * i; i--; } return fact; } // Driver method public static void Main() { int num = 5; Console.WriteLine( "Factorial of " + num + " is " + factorial(5)); } } |
Javascript
<script> // JavaScript Program to implement // the above approach // function to find factorial of given // number using while loop function factorial(n) { if (n == 0) return 1; let i = n, fact = 1; while (Math.floor(n / i) != n) { fact = fact * i; i--; } return fact; } // Driver code let num = 5; document.write( "Factorial of " + num + " is " + factorial(num) + "<br>" ); // This code is contributed by Potta Lokesh </script> |
输出:
Factorial of 5 is 120
上述迭代解的时间复杂度为O(n)。 单线溶液(使用三元运算符):
C++
// C++ program to find factorial of given number #include <iostream> using namespace std; int factorial( int n) { // single line to find factorial return (n == 1 || n == 0) ? 1 : n * factorial(n - 1); } // Driver Code int main() { int num = 5; cout << "Factorial of " << num << " is " << factorial(num); return 0; } // This code is contributed by shivanisinghss2110 |
C
// C++ program to find factorial of given number #include <stdio.h> int factorial( int n) { // single line to find factorial return (n == 1 || n == 0) ? 1 : n * factorial(n - 1); } // Driver Code int main() { int num = 5; printf ( "Factorial of %d is %d" , num, factorial(num)); return 0; } // This code is contributed by Rithika palaniswamy. |
JAVA
// Java program to find factorial // of given number class Factorial { int factorial( int n) { // single line to find factorial return (n == 1 || n == 0 ) ? 1 : n * factorial(n - 1 ); } // Driver Code public static void main(String args[]) { Factorial obj = new Factorial(); int num = 5 ; System.out.println( "Factorial of " + num + " is " + obj.factorial(num)); } } // This code is contributed by Anshika Goyal. |
Python3
# Python 3 program to find # factorial of given number def factorial(n): # single line to find factorial return 1 if (n = = 1 or n = = 0 ) else n * factorial(n - 1 ) # Driver Code num = 5 print ( "Factorial of" , num, "is" , factorial(num)) # This code is contributed # by Smitha Dinesh Semwal. |
C#
// C# program to find factorial // of the given number using System; class Factorial { int factorial( int n) { // single line to find factorial return (n == 1 || n == 0) ? 1 : n * factorial(n - 1); } // Driver Code public static void Main() { Factorial obj = new Factorial(); int num = 5; Console.WriteLine( "Factorial of " + num + " is " + obj.factorial(num)); } } // This code is contributed by vt_m. |
PHP
<?php // PHP program to find factorial // of given number function factorial( $n ) { // single line to find factorial return ( $n == 1 || $n == 0) ? 1: $n * factorial( $n - 1); } // Driver Code $num = 5; echo "Factorial of " , $num , " is " , factorial( $num ); // This code is contributed by anuj_67. ?> |
Javascript
<script> // JavaScript program to find factorial of given number function factorial(n) { // single line to find factorial return (n == 1 || n == 0) ? 1 : n * factorial(n - 1); } // Driver Code var num = 5; document.write( "Factorial of " +num + " is " + factorial(num)); // This code is contributed by shivanisinghss2110. </script> |
输出:
Factorial of 5 is 120
上述解决方案会导致大量数据溢出。请参考 大数阶乘 这是一个适用于大量数据的解决方案。 如果您在上述代码/算法中发现任何错误,请写评论,或者找到其他方法来解决相同的问题。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END