伦418 2022-05-11 15:43 采纳率: 100%
浏览 46
已结题

C语言递归n!,解决13!计算错误


#include<stdio.h>
int main()
{
    int fac(int n);
    int n;
    int y;
    printf("input an integer number:");
    scanf("%d",&n);
    y=fac(n);
    printf("%d!=%d\n",n,y);
    return 0;
}

int fac(int n)
{
    int f;
    if(n<0)
      printf("n<0,data error!");
    else if(n==0||n==1)
      f=1;
    else f=fac(n-1)*n;
    return(f);
}

计算结果不是预期结果。

img

img

如何将f,y和fac函数定义为float或double型?
谢谢友友的答疑~(^з^)-♡

  • 写回答

1条回答 默认 最新

  • 丨秋水丨 2022-05-11 15:52
    关注

    改成long long就可以了

    
    #include<stdio.h>
    int main()
    {
        long long fac(long long n);
        long long n;
        long long y;
        printf("input an integer number:");
        scanf("%lld", &n);
        y = fac(n);
        printf("%lld!=%lld\n", n, y);
        return 0;
    }
    
    long long fac(long long n)
    {
        long long f;
        if (n < 0)
            printf("n<0,data error!");
        else if (n == 0 || n == 1)
            f = 1;
        else f = fac(n - 1) * n;
        return(f);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)