/*
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
剑指offer思路1:
利用构造函数
*/
class Sum
{
public static int n;
public static int sum;
Sum()
{
n++;
sum+=n;
}
public static int sum(int n) {
Sum[] array=new Sum[n];
/*
* 构造了对象数组是不假,
但是调用的是创建数组引用对象的构造函数,
还要实例化数组中的对象n次才行,不能避免for循环
* */
for(int i=0;i<n;i++)
{
array[i]=new Sum();
}
return sum;
}
//利用异常
public static int sum1(int n)
{
try
{
int a=1/n;
return n+sum(n-1);
}
catch (Exception e)
{
}
return 0;
}
//利用短路
public static int sum2(int n)
{
int res=n;
boolean flag=(n>0)&&((res+=sum(n-1))==0);
return res;
}
public static void main(String[] args)
{
System.out.println(sum(1));
}
}