求1+2+...+n _java

问题描述

求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。输入n的值,输出1+2+…+n的结果。

限制:1<=n<=10000

示例1:
输入:3
输出:6
示例2:
输入:9
输出:45

问题分析

题目要求了不能使用循环,那就只能用递归了,但是递归需要一个结束的条件,题目要求不能使用分支判断语句,那就只能使用短路逻辑了。

逻辑运算符,以 && 为例,A && B 当语句A满足false时,返回值就是false,语句B将不再执行。以 II 为例,A || B 当语句A满足true时,返回值就是true,语句B将不再执行。

代码实现

import java.util.Scanner;

public class Sum_1_n {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		System.out.println(sumNums(n));
	}
	private static int sumNums(int n) {
		boolean bo =  n > 0 && (n += sumNums(n - 1)) > 0;	//当n<=0时,短路与发挥作用,&&后面的语句不再执行,递归开始回溯
		return n;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_48598155/article/details/106794042