我用的是vs2022 ,也是一个初学者。
我想问下为什么这几行代码只可以计算到12!,13!及以上的结果“1932053504”,但正确结果应该是“6227020800”
int factorial(int n);
可能是这行代码的问题 但我在查证的时候发现网上
数值越界了,int 类型值上限就21亿多,换成 long long 就行了
数值溢出了,你把int改成long long,应该可以算到20以内的阶乘,如果要算更大数的阶乘,你得自己实现大数乘法了。
建議投向python陣營, 整型無上溢, 隨便算哈哈哈:
刚才又看了一会儿书,结合上面四位大佬的话 我发现是整数类型变量“int” 的问题 书中如是写道
(变量都有类型(如整数类型int),并在内存中占有一定的空间,例如在vc++中,整数变量占用4个字节的空间。因此,每个整数都有一定的取值范围。运行上述程序,输入整数13,其结果(13!)就超出了整数的取值范围,会出现一个错误的结果 )
所以要么改变变量类型 ,要么改变公式。但我现在还没有学到其他变量格式 所以我并不会LONG LONG 变量,我再学习一段时间再来回答我的答案。