求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现

时间:2022-03-06 23:25:34

前几天跟同学交流听说一个比较有意思的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;
}

}