Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ tính giai thừa


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);
}