如果要一个1+2+3+4+5+6+7+8+9+10的总和我们一般用的方法是:
int sum=0;
for(int i = 1 ;i<=10 ;i ++){
sum+=i;
}
但是如果你记忆力较好的话初中的<数列级数>可以更有效率而且更快的帮你解决这问题.
int sum=10*(11-1)/2;就这样一句就可以解决.
测试效率结果
System.DateTime startTime = System.DateTime.Now;
long sum=0;
for(int i = 1;i<=100000000;i++)
{
sum+=i;
}
Console.WriteLine(long.MaxValue);
Console.Write("循环法:"+sum);
Console.WriteLine("所用时间:"+(System.DateTime.Now.Millisecond - startTime.Millisecond).ToString());
startTime = System.DateTime.Now;
sum=(long)100000000*(100000000+1)/2;
Console.Write("数列级数:"+sum);
Console.WriteLine("所用时间:"+(System.DateTime.Now.Millisecond - startTime.Millisecond).ToString());
}
循环法法时间是: 第一次:453 第二次:373 第三次:375
数列级数法时间是: 第一次:0第二次:0 第三次:0
PS:在现在的程序员大部分仍习惯于循环法所以<数列级数法>最好加上注释.
像://此句语句功能 for(int i = 1;i<=100000000;i++)
// {
// sum+=i;
// }
int sum=0;
for(int i = 1 ;i<=10 ;i ++){
sum+=i;
}
但是如果你记忆力较好的话初中的<数列级数>可以更有效率而且更快的帮你解决这问题.
int sum=10*(11-1)/2;就这样一句就可以解决.
测试效率结果
System.DateTime startTime = System.DateTime.Now;
long sum=0;
for(int i = 1;i<=100000000;i++)
{
sum+=i;
}
Console.WriteLine(long.MaxValue);
Console.Write("循环法:"+sum);
Console.WriteLine("所用时间:"+(System.DateTime.Now.Millisecond - startTime.Millisecond).ToString());
startTime = System.DateTime.Now;
sum=(long)100000000*(100000000+1)/2;
Console.Write("数列级数:"+sum);
Console.WriteLine("所用时间:"+(System.DateTime.Now.Millisecond - startTime.Millisecond).ToString());
}
循环法法时间是: 第一次:453 第二次:373 第三次:375
数列级数法时间是: 第一次:0第二次:0 第三次:0
PS:在现在的程序员大部分仍习惯于循环法所以<数列级数法>最好加上注释.
像://此句语句功能 for(int i = 1;i<=100000000;i++)
// {
// sum+=i;
// }
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货