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