剑指offer_求1+2+3+...+n


/*
求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));
	}
}

点赞