weixin_45857043
weixin_45857043
2019-12-21 16:18
采纳率: 47.6%
浏览 3.1k

【问题描述】编写函数f,功能是用递归的方法求n!,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出n!并在主函数中输出。

#include
long long int f(int n)
{
int i;
long long int m=1;
for(i=1;i<=n;i++)
m=m*i;
return m;
}
int main(int argc, char *argv[])
{
int a;
scanf("%d",&a);
printf("%d!=%lld",a,f(a));
return 0;
}
图片说明
求大佬帮助寻找错误

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • caozhy
    已采纳

    你的程序不满足题意,没有用递归,递归写法如下:

    int f(int n)
    {
    if (n == 1) return 1;
    return f(n - 1) * n;
    }
    
    点赞 4 评论
  • qtchen_1988
    qtchen_1988 2019-12-21 17:03

    你的代码没错,但题目要求返回的是int 不是 long long。

    #include<stdio.h>
    
    int f(int n)
    {
        int i;
        int m=1;
        for(i=1;i<=n;i++)
            m=m*i;
        return m;
    }
    int main(int argc, char *argv[])
    {
        int a;
        scanf("%d",&a);
        printf("%d!=%d",a,f(a));
        return 0;
    }
    
    
    点赞 评论

相关推荐