求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;
	}

}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值