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

Giá trị nguyên tối đa để tính giai thừa trên máy trong C++

Tìm giá trị nguyên lớn nhất mà giai thừa có thể tính được trên máy tính trong C++.

Giai thừa tăng rất nhanh, C++ chỉ xử lý được đến giá trị nhất định bằng kiểu dữ liệu cơ bản. Cần tìm giới hạn này.

Phương pháp

Dùng tính chất kiểu dữ liệu: khi vượt quá giá trị tối đa, kiểu số có dấu trả về số âm. Dùng long long int (kiểu cơ bản lớn nhất).

Ví dụ

#include <iostream>
using namespace std;

int calcMaxFactVal() {
    int maxVal = 1;
    long long int maxFactorial = 1;
    while (true) {
        if (maxFactorial < 0)
            return (maxVal - 1);
        maxVal++;
        maxFactorial *= maxVal;
    }
    return -1;
}

int main() {
    cout << "Giá trị nguyên tối đa để tính giai thừa trên máy là " << calcMaxFactVal();
    return 0;
}

Đầu ra

Giá trị nguyên tối đa để tính giai thừa trên máy là 20