18

问答题 18 /290

写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)

参考答案

【解答】

int Sum( int n ) 
{  
 return ( (long)1 + n) * n / 2;  //或return (1l + n) * n / 2; 
} 
【剖析】
对于这个题,只能说,也许最简单的答案就是最好的答案。下面的解答,或者基于下面的解答思路去优化,不管怎么“折腾”,其效率也不可能与直接return ( 1 l + n ) * n / 2相比!   
int Sum( int n ) 
{ 
 long sum = 0; 
 for( int i=1; i<=n; i++ ) 
 { 
 sum += i; 
 } 
 return sum; 
}