课堂留的实验题目,做出来的总是不对,需要定义三个函数,一个计算阶乘,一个计算s1,一个计算s2
long int s(int n)
{
int i;
long int s = 1;
for (i = 1; i <= n; i++)
{
s *= i;
}
return s;
}
long int s1(int n)
{
int i;
long int s = 0;
for (i = 1; i <= n; i++)
{
int j = 1;
long int s1 = 1;
for(j = 1; j <= i; j++)
{
s1 *= j;
}
s += s1;
}
return s;
}
long int s2(int n)
{
int i;
long int s = 0;
for (i = n; i >= 1; i--)
{
int j = 1;
long int s1 = 1;
for(j = 1; j <= i; j++)
{
s1 *= j;
}
if(s == 0)
{
s = s1;
}
else
{
s -= s1;
}
}
return s;
}
#include <stdio.h>
long int factorial(int n)
{
long int ret = 1;
int i;
for(i=n;i>0;i--)
{
ret *= i;
}
return ret;
}
long int handles1(int n)
{
long int ret = 0;
int i;
for(i=n;i>0;i--)
{
ret += factorial(i);
}
return ret;
}
long int handles2(int n)
{
long int ret = factorial(n);
int i;
for(i=(n-1);i>0;i--)
{
ret -= factorial(i);
}
return ret;
}
int main()
{
long int s = factorial(5);
long int s1 = handles1(5);
long int s2 = handles2(5);
printf("s=%ld s1=%ld s2=%ld\n",s,s1,s2);
return 0;
}