求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。Java實現
阿新 • • 發佈:2019-01-07
前幾天跟同學交流聽說一個比較有意思的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; } }