c#循环问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:55:03
int m,n,k;
long int t,s=0;
n=4;
for(m=1;m<=n;m++)
{
t=1;
for(k=1;k<=m;k++)
t*=m;
s+=t;
}
printf("s=%ld\n",s);
以上题目我杂算都是47,运行下来是288郁闷了这究竟杂算的?高手指点

1^1+2^2+3^3+4^4=288

t1 = 1;
t2 = 2*2;
t3 = 3*3*3;
t4 = 4*4*4*4;
s = t1 + t2 + t3 + t4 + t5 = 288

你第二个循环当M=1时候结果是47.当M=2时候又得重新算了.结果是累加的.

1*1+2*2+3*3*3+4*4*4*4=288

分析:
m=1时,t=1*1;s=1*1
m=2时,t=1*2*2;s=1*1+1*2*2
m=3时,t=1*3*3*3;s=1*1+1*2*2+1*3*3*3
m=4时,t=1*4*4*4*4;s=1*1+1*2*2+1*3*3*3+1*4*4*4*4=289

注意第二个循环里面,t*=m,你是不是看成是t*=k了?不是的话我也不知道你错哪了