信息技术段子手 2022-08-17 15:41 采纳率: 87.5%
浏览 50
已结题

对于一个代码结果不明白:求n的阶乘。(不考虑溢出)

代码如下:
int Fac(int n)
{
if (n <= 1)
return 1;
else
return n * Fac(n - 1);
}

int main()
{
int n = 0;
scanf("%d", &n);

int ret = Fac(n);

printf("%d\n", ret);
return 0;

}

问题:我想知道为什么不考虑溢出的情况下这段代码最大只能求33的阶乘?不是说求n的阶乘吗?

  • 写回答

5条回答 默认 最新

  • 於黾 2022-08-17 15:46
    关注

    那么是谁告诉你不考虑溢出的情况下最大只能求33的阶乘的
    如果是理论上假设int可以存无限大的数
    那你求到100的阶乘也没有问题呀
    而实际上你要运行这段程序,那怎么可能不考虑溢出呢,溢出是客观存在的
    -=-=-=-=
    你看到求到33它还能显示一个值,而求到34它就变成0了,就以为最大只能求33,可是求34它不是也运行的好好的吗,没有崩溃呀
    而它显示为0了,本质上还是因为溢出
    一开始溢出的位数不多,低位还有数,所以会显示一个数
    溢出的多了,低位全是0了,不显示0显示什么
    -=-==-=-
    如果你只看结果是不是一个非0的数字,而不看它的答案对不对,就管这叫“不考虑溢出”
    我觉得你对什么是不考虑溢出有很深的误解

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月25日
  • 已采纳回答 8月17日
  • 创建了问题 8月17日

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像