1. 程式人生 > >求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。Java實現

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。Java實現

前幾天跟同學交流聽說一個比較有意思的oj題目,具體描述如下:

題目描述:

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。

輸入:

輸入可能包含多個測試樣例。

對於每個測試案例,輸入為一個整數n(1<= n<=100000)。

輸出:

對應每個測試案例,

輸出1+2+3+…+n的值。

樣例輸入:

3

5

樣例輸出:

6

15

百度了下找到了原題目跟該博主提供的一些c/c++解法(附連結:點選開啟連結),由於java的構造方法在底層實現時與c++的建構函式機制有些不同,所以原博主提供的一些方法無法實現,現實驗了一種切實可行的java解法,思路來源於原博主的方法三,利用了&&在判斷true、false時的特性,具體程式碼如下:

import java.util.Scanner;


public class one_plus_two_plus_n {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n=0;
		Scanner scan=new Scanner(System.in);
		System.out.println("input n:");
		n=scan.nextInt();
		int sum=0;
		sum=plus(sum,n);
		System.out.println(sum);
		
	}
	public static int plus(int sum,int n){
		boolean is_end=true;
		sum+=n;
		is_end=(n>0) && ((sum=plus(sum,--n))>0);
		return sum;
	}

}