1*2*3*4*....*100的最简单算法
来源:百度知道 编辑:UC知道 时间:2024/06/07 12:57:55
如上问题,请用最通俗文字说明/.
#include<stdio.h>
#define N 31
main()
{
unsigned long i,sum=1;
for(i=1;i<=N;i++)
{
sum*=i;
}
printf("%d\n",sum);
}
上面这种方法能得到阶乘的值,但N最大只能为31,否则就溢出了
可以用手工算法。
就是任意长位的数字相乘都可以。
更详细一点,把数字用字符串处理,如用户输入的1231313*12313235065454646343
其实是"1231313*12313235065454646343",
然后你分别提取"1231313"和"12313235065454646343"用代码模拟人手工计算。
如
12
12
--
24
12
---
144
说白了就是算100的阶乘。
double fun(int n)//传入100
{
double x=0;
if(n == 0 || n == 1)
return 1;
else
x = n*fun(n-1);
return x;
}
#include<stdio.h>
void main()
{
double i,sum=1;
for(i=1;i<=100;i++)
sum=sum*i;
printf("%d",sum);
}
double都不够长 干脆计算对数加法 再还原回来得了 用matlab只有2行
for i=1:100 buf[i]=log(i);end
exp(sum(buf)) %不加分号就可以直接显示 否则只计算不显示<
1*2*3+2*3*4+......9*10*11
3*3*2*1+4*4*3*2*1+5*5*4*3*2*1+ ...10*10*9*8*7*6*5*4*3*2*1=
1/1*2+1/2*3+1/3*4+......+1/9*10
1+(1/1+2)+(1/1+2+3)+(1/1+2+3+4)...(1/1+2+3+4+...+10)
(3+10)(3^2+1)(3^4+1)(3^8+1)
1*2*3+2*3*4+3*4*5......+10*11*12
1-2+2^2-2^3+2^4-2^5.......+2^10简便方法!
1+2+2^2+2^3+2^4+…+2^10
找规律:1、2、3、4、10、19、()、69
VB:用函数实现1+2!+3!+4!+......+10!