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

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

发布了46 篇原创文章 · 获赞 10 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/sqhren626232/article/details/103073779
今日推荐