题目
题目:求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 }
结语
好了,就到这里,为了能进大公司,要好好学习算法和数据结构!