Tiz 发表于 2021-6-1 12:05:53

使用C语言编写程序求取1-2!+3!-4!+5!-6!...+15! 的和,并打印最终结果。

#include<stdio.h>
int jiecheng(int n)
{
        if (n == 0)
        {
                return 1;
        }
        else
        {
                return n * jiecheng(n - 1);
        }
}
int sum(int n)
{
        int i,s;
        s = 0;
        for (i = 1; i <=n; i++)
        {
                if (i % 2 == 1)
                {
                        s = s + jiecheng(i);
                }
                else
                {
                        s = s - jiecheng(i);
                }
        }
        return s;
}
int main()
{
        int n = 15;       
        printf("%d", sum(n));
        return 0;
       
}
错哪了?

wp231957 发表于 2021-6-1 12:18:40

本帖最后由 wp231957 于 2021-6-1 15:44 编辑

阶乘那个明显不对
我觉得不用递归更简单一些



#include<stdio.h>

long longjiecheng(int n)
{
    long longt=1;
    for(int k=1;k<=n;k++)
    {
         t*=k;
    }
    return t;   
}

long longsum(int n)
{
    long long s = 0;
    int j=1;
    for (int i = 1; i <=n; i++)
    {
      s+=jiecheng(i)*j;
      j*=-1;
    }
    return s;
}
int main()
{
      int n = 15;      
      printf("%lld\n", sum(n));
      return 0;
      
}

最强废铁h 发表于 2021-6-1 14:28:00

能解释一下,jiecheng那个高数的意思吗?新鱼油问

最强废铁h 发表于 2021-6-1 14:28:47

不是高数是函数

万千只cnm 发表于 2021-6-1 16:33:50

long
factorial( int n){   
        int result = 1;
        while( n>1 ){   
                result *=n;
                n -=1;
        }
        return result;   
}
简单循环   

万千只cnm 发表于 2021-6-1 16:39:34

long
factorial( int n){   
   if( n<=0)
      return 1;
else   returnn*factorial(n-1) ;   //n不等于0 则一直进入函数   
      
}
//递归 ,尾部递归可以转换为简单循环
如传进去5    return5*f(4) ,一直调用自己直到逼近某一 条件   

longzhanyuye 发表于 2021-6-1 19:40:45

程序没有错,只是S=15的时候数据溢出了。

Tiz 发表于 2021-6-3 20:02:44

wp231957 发表于 2021-6-1 12:18
阶乘那个明显不对
我觉得不用递归更简单一些

谢谢解答

Tiz 发表于 2021-6-3 20:03:16

最强废铁h 发表于 2021-6-1 14:28
能解释一下,jiecheng那个高数的意思吗?新鱼油问

那个就是不想用factorial   

Tiz 发表于 2021-6-3 20:03:47

万千只cnm 发表于 2021-6-1 16:33
简单循环

感谢

万千只cnm 发表于 2021-6-3 20:08:08

Tiz 发表于 2021-6-3 20:03
感谢

能给个最佳嘛{:5_102:}

Tiz 发表于 2021-6-3 20:11:55

万千只cnm 发表于 2021-6-1 16:39
//递归 ,尾部递归可以转换为简单循环
如传进去5    return5*f(4) ,一直调用自己直到逼近某一 条件 ...

感谢大佬

Tiz 发表于 2021-6-3 20:12:25

longzhanyuye 发表于 2021-6-1 19:40
程序没有错,只是S=15的时候数据溢出了。

谢谢 我再看看{:10_266:}

Tiz 发表于 2021-6-3 20:14:27

wp231957 发表于 2021-6-1 12:18
阶乘那个明显不对
我觉得不用递归更简单一些

感谢大佬的解答

最强废铁h 发表于 2021-6-3 20:16:27

Tiz 发表于 2021-6-3 20:03
那个就是不想用factorial

我是想问阶乘这个定义函数是什么意思

Tiz 发表于 2021-6-3 20:25:18

最强废铁h 发表于 2021-6-3 20:16
我是想问阶乘这个定义函数是什么意思

这个你还是去求助大佬吧我水平暂时还无法回答{:10_266:}
页: [1]
查看完整版本: 使用C语言编写程序求取1-2!+3!-4!+5!-6!...+15! 的和,并打印最终结果。