Giai thừa của một số nguyên không âm n là tích của tất cả các số nguyên dương nhỏ hơn hoặc bằng n.
Ví dụ: Giai thừa của 5 là 120.
5! = 5 * 4 * 3 * 2 * 1 5! = 120
Giai thừa có thể tìm bằng chương trình đệ quy hoặc không đệ quy. Cả hai ví dụ như sau.
Giai thừa bằng chương trình không đệ quy (vòng lặp)
Vòng lặp for có thể dùng để tìm giai thừa. Minh họa bằng chương trình sau:
Ví dụ
#include <iostream>
using namespace std;
int main() {
int n = 5, fact = 1, i;
for (i = 1; i <= n; i++)
fact = fact * i;
cout << "Factorial of " << n << " is " << fact;
return 0;
}Đầu ra
Factorial of 5 is 120
Trong chương trình trên, vòng lặp for chạy từ 1 đến n. Mỗi lần lặp, fact nhân với i. Giá trị cuối cùng của fact là tích của tất cả các số từ 1 đến n.
for (i = 1; i <= n; i++)
fact = fact * i;Giai thừa bằng chương trình đệ quy
Chương trình sau minh họa cách tìm giai thừa bằng đệ quy.
Ví dụ
#include <iostream>
using namespace std;
int fact(int n) {
if ((n == 0) || (n == 1))
return 1;
else
return n * fact(n - 1);
}
int main() {
int n = 5;
cout << "Factorial of " << n << " is " << fact(n);
return 0;
}Đầu ra
Factorial of 5 is 120
Trong chương trình trên, hàm fact() là hàm đệ quy. Hàm main() gọi fact() với số cần tính giai thừa.
cout << "Factorial of " << n << " is " << fact(n);
Nếu số là 0 hoặc 1, fact() trả về 1. Nếu là số khác, fact() gọi đệ quy chính nó với giá trị n-1.
int fact(int n) {
if ((n == 0) || (n == 1))
return 1;
else
return n * fact(n - 1);
}