【算法题】不使用乘除法,for,while,if,else,switch,case,条件判断语句(A?B:C) 实现:1+2+....+n
为了能进大公司,要好好学习算法哦!
public class Solutionl_Sum
{
//声明长度为N的数组
public static int[] Temps1 = new int[100];
public void Print_Sum()
{
N = 0;
//temp = new Temp();
//Temp2();
Temp4();
Console.WriteLine(Sum);
}
public static int Sum { get; set; }
public static int N { get; set; }
#region 递归实现的循环
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
#region 两个方法实现的循环
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
#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
}
bool fun()
{
++index;
sum += index;
return index != n && fun();
}