登 录
大四了 没事找点面试题做做,不过发现大部分题目给出的答案有待商榷,下边举个例子
给定m的值计算1-2+3-4+5+.....+m
class Program { protected static int Func1(int i)//我的解法 { int sum = 0; if (i % 2 == 0) sum = -(i / 2); else sum = (i + 1) / 2; return sum; } protected static int Func2(int i)//网上很多参考答案 { int sum=0; for (int k = 1; k < i+1; k++) { if (k % 2 == 1) sum += k; else sum = sum - k; } return sum; } static void Main(string[] args) { int i; Console.WriteLine("请输入要计算的数字个数"); i =Convert.ToInt32( Console.ReadLine()); int result1 = Func1(i); int result2 = Func2(i); Console.WriteLine("func1的计算结果是{0},func2的计算结果是{1}",result1,result2); Console.ReadLine(); } }
在以上题目可以看出,当m效率很低,每次都由于if判断打断for流水线的执行作业;而第一种方法只要一次判断即可,即使m取值很大,效率依然很好。
抱歉!评论已关闭.