读书人

【算法题】不运用乘除法,for,while,if

发布时间: 2013-06-25 23:45:42 作者: rapoo

【算法题】不使用乘除法,for,while,if,else,switch,case,条件判断语句(A?B:C) 实现:1+2+....+n
为了能进大公司,要好好学习算法哦!【算法题】不运用乘除法,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
}


博客地址:http://blog.csdn.net/a66081638/article/details/8847850 算法
[解决办法]
你是想展示自己的算法吗
[解决办法]
还有个goto漏掉了
[解决办法]
是的,表面看起来没有使用,但是内部方法用了!
[解决办法]
用 try catch 当 if else 用 ,可以说是奇葩吗?
[解决办法]
这种也叫算法??????
[解决办法]
用linq很简单

int n=100; //计算1+2+...+100
int []arry=new int[n+1];
var res=arry.Select((x,i)=>i).Sum(); //res就是1+2+...n的结果
[解决办法]

bool fun()
{
++index;
sum += index;
return index != n && fun();
}

读书人网 >C#

热点推荐