您的位置:首页 > 职场人生

一个常见面试题的解法之我见

2009-09-27 13:31 225 查看
大四了 没事找点面试题做做,不过发现大部分题目给出的答案有待商榷,下边举个例子

给定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取值很大,效率依然很好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: