不使用乘除法,for,while,if,else,switch,case,条件判断语句(A?B:C) 实现:1+2+....+n

题目

题目:求1+2+...+n,

要求不能使用乘除法,for,while,if,else,switch,case,条件判断语句(A?B:C)

使用的语言:

C#

分析:

循环是想让相同的代码执行,达到累加的作用,在C#中最常见的有三种循环方式:

1.两个类初始化调时初始化类

2.两个方法相互调用

3.递归一个方法

实现:

1.两个类初始化调时初始化类

public class Solutionl_Sum
    {
public void Print_Sum()
        {
            N = 0;
            temp = new Temp();
            Console.WriteLine(Sum);
        }
public static  int Sum { get; set; }
        public static  int N { get; set; }
#region 两个类实现的循环

        //声明长度为N的数组
        public static Temp[] Temps = new Temp[100];
        public static Temp temp;
        public class Temp
        {
            public int Index;
            public Temp()
            {
                //++N 相当于每次执行都加1
                ++N;
                //相当于1+2+...+N
                Sum += N;
                //初始化Temp1类
                Temp1 Temp1 = new Temp1();
            }
        }

        public class Temp1{
            public Temp1()
            {
                try
                {
                    //将对象放到数组中,当N-1>100是报错,停止循环
                    Temps[N - 1] = temp;
                    //初始化Temp类
                    temp = new Temp();
                }
                catch (Exception)       //利用try..catch结束循环
                {
                    //由于先执行的是Temp(),所以相当于多加了一次N,结束时一定要减去N
                    Sum -= N;
                }
            }
        }

        #endregion
}

2.两个方法相互调用

public class Solutionl_Sum
    {
public void Print_Sum()
        {
            N = 0;
            Temp2();
            Console.WriteLine(Sum);
        }
public static  int Sum { get; set; }
        public static  int N { get; set; }
#region 两个方法实现的循环
        //声明长度为N的数组
        public static int[] Temps1 = new int[100];
        public void Temp2()
        {
            ++N;        //++N 相当于每次执行都加1
            Sum += N;   //相当于1+2+...+N
            Temp3();    //初始化Temp1类
        }

        public void Temp3()
        {
            try
            {
                Temps1[N - 1] = N;  //将N放到数组中,当N-1>100是报错,停止循环
                Temp2();            //初始化Temp类
            }
            catch (Exception)       //利用try..catch结束循环
            {
                Sum -= N;           //由于先执行的是Temp2(),所以相当于多加了一次N,结束时一定要减去N
            }
            
        }

        #endregion
}

3.递归一个方法

public class Solutionl_Sum
    {
public void Print_Sum()
        {
            N = 0;
            Temp4();
            Console.WriteLine(Sum);
        }
public static  int Sum { get; set; }
        public static  int N { get; set; }
#region 递归实现的循环
        //声明长度为N的数组
        public static int[] Temps1 = new int[100];
        public void Temp4()
        {
            ++N;            //++N 相当于每次执行都加1
            Sum += N;       //相当于1+2+...+N
            try
            {
                Temps1[N - 1] = N;          //将N放到数组中,当N-1>100是报错,停止循环
                Temp4();                    //递归循环
            }
            catch (Exception)               //利用try..catch结束循环
            {
                Sum -= N;                   //由于先执行的是Sum += N,所以相当于多加了一次N,结束时一定要减去N
            }
        }

        #endregion
}

结语

好了,就到这里,为了能进大公司,要好好学习算法和数据结构!

posted on 2013-04-25 09:32  马晓锋  阅读(277)  评论(0编辑  收藏  举报