阶乘(factorial)是基斯顿·卡曼于1808年发明的运算符号,用于表示一个正整数n的所有小于及等于该数的正整数的积。自然数n的阶乘写作n!。例如,5的阶乘表示为5! = 1 × 2 × 3 × 4 × 5 = 120。
阶乘在数学和计算机科学中有广泛的应用。例如,在组合数学中,阶乘用于计算排列和组合的数量。此外,计算机科学中也有使用阶乘进行计算的算法。
例如20的阶乘的结果为:2432902008176640000,已经非常大,如果是再大数的阶乘已经无法大到无法写出他的完整形式。
使用递归法实现一个阶乘:
#include <iostream>
//计算阶乘
unsigned long long factorial_recursive(long n) {if (n == 0) return 1; // 基本情况return n * factorial_recursive(n - 1); // 递归调用
}int main() {int number;std::cout << "输入一个正整数: ";std::cin >> number;std::cout << "结果=" << factorial_recursive(number) << std::endl;return 0;
}
例如20的阶乘结果为:
如果我们输入90,就已经计算不出结果了:
除了使用递归也可以使用迭代方式来实现:
#include <iostream>unsigned long long factorial_iterative(int n) {unsigned long long result = 1;for (int i = 1; i <= n; ++i) {result *= i;}return result;
}int main() {int number;std::cout << "输入一个正整数: ";std::cin >> number;std::cout << "结果为=" << factorial_iterative(number) << std::endl;return 0;
}
输入20,计算阶乘的结果为:
看到结果是一样的,所以使用哪种方式是一样的,如果要计算再大的话,就需要用到第三方的库了,否则将无法显示大数。