为了账号安全,请及时绑定邮箱和手机立即绑定

写一个函数,求一个数组a[ ]中,从第int start 到int end之间的所有元素阶乘的和?

写一个函数,求一个数组a[ ]中,从第int start 到int end之间的所有元素阶乘的和?

慕尼黑8549860 2019-02-26 09:06:28
写一个函数,求一个数组a[ ]中,从第int start 到int end之间的所有元素阶乘的和
查看完整描述

3 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

#include <stdio.h>
int main(void)
{
int start;
int end;
long sum=0;
int i,j;
long fac=1;
printf("输入start和end的值:");
scanf("%d%d",&start,&end);
for(i=start ; i<=end ; i++)
{
for(j=1;j<=i;j++)
fac*=j;
sum+=fac;
}
printf("%d!+...+%d!=%ld",start,end,sum);
return 0;
}
程序只能实现很小范围的阶乘,因为long型的数最大只有 2147483648

 


查看完整回答
反对 回复 2019-03-27
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

#include <iostream>
using namespace std;

long factorial(int n)
{
if(n == 1) return n;
return n*factorial(n - 1);
}

long fun(int *a, int start, int end)
{
long sum = 0;
for(int i = start; i <= end; i++)
{
sum += factorial(a[i - 1]);
}
return sum;
}
void main()
{
int a[5] = {1, 2, 3, 4, 5};
cout<<fun(a, 3, 4)<<endl;
}
30
3*2*1 +4*3*2*1 = 30


查看完整回答
反对 回复 2019-03-27
?
烙印99

TA贡献1829条经验 获得超13个赞

int factorial(int num)
{
int i = 0;
int result = 1;
for(int i = 1;i < num+1; i++)
{
result = i * result;
}
return result;
}

int fun(int* a, int start, int end)
{
int result = 0;
for(int i = start; i < end + 1;i++)
{
result = result + factorial(a[i]);
}
return result;
}


查看完整回答
反对 回复 2019-03-27
  • 3 回答
  • 0 关注
  • 913 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信