java不用循环语句和if语句还有三元运算符实现累加功能

今天看博客的时候遇到一道很有意思的题目,这里和大家分享一下,希望大家能感兴趣,同时也给自己做一个记录。

问题描述:不让用for语句、while语句、if语句以及三元运算符(?:)实现1+2+3+……+n

这是一个典型的求等差数列前n项和的问题,如果没有题目的限制条件其实很简单。根据题目的限制,很容易就想到应该用递归进行实现。但是题目的限制不能使用if语句和三元运算符,这就给递归的结束造成了困难。这里大家可以想想应该如何实现。

根据提示,想到了任何一门语言都涉及的一个知识点:短路。短路就是在一个较长的与或表达式中,前面的boolean表达式的值为true或者false的时候,后面的表达式就不会执行。基于此,我们就知道该如何编程实现了,其java代码如下:

public class Solution {
	
	public static void main(String[] args) {
		System.out.println("Result:" + superposition(100));
	}
	
	/**
	 * 功能:计算以1为首项,公差为1的等差数列的前n项和
	 * 1+2+3+4+……+n
	 * 要求:不能用for、while、if以及三元运算符(?:)
	 */
	public static int superposition(int n) {
		int result = n;
		//当n=0时,(n!=0)为false,导致后面的(result+=superposition(n-1))不会再执行,达到结束程序的目的
		boolean temp = (n != 0) && true && (Boolean.valueOf((result += superposition(n - 1)) + ""));
		return result;
	}

}
============
Result:5050

如果你有什么别的好方法,欢迎交流分享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值