gpt4 book ai didi

c++ - 阶乘函数不适用于大数

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:09 26 4
gpt4 key购买 nike

我正在尝试编写一个函数来计算我定义如下的给定数字的阶乘:

unsigned long long int fact(unsigned long long int n){
return (n == 0 || n == 1) ? 1 : fact(n - 1) * n;
}

我的主要功能是:

int main(int argc, const char * argv[]) {
unsigned long long int z;
cout << "Please eneter the number: ";
cin >> z;
z = fact(z);
cout << z << endl;
return 0;
}

代码在 20 之前工作正常,但之后返回垃圾值。

我知道我可以使用数组来解决问题但我不明白为什么程序会以这种行为运行?

最佳答案

21!是一个很大的数字,超出了 unsigned long long 所能容纳的范围。您只会得到数据类型的溢出。

关于c++ - 阶乘函数不适用于大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48447761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com