java递归算法 -求和最简写法

定义:

是一种函数调用自身的操作。

递归被用于处理包含有更小的子问题的一类问题。

一个递归函数可以接受两个输入参数:一个最终状态(终止递归)或一个递归状态(继续递归)。

代码

import java.util.Scanner;

public class Recursion {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入一个整数: ");
		int n = scanner.nextInt();
		int sum = sum(n); // 求1到用户输入的整数的和
		System.out.println("1 + 2 + 3 + ... + " + n + " = " + sum);
		scanner.close(); // 关闭Scanner对象
	}

	private static int sum(int i) {
		return (i == 1) ? 1 : i + sum(i - 1);
	}
}
	

运行截图

java递归算法 -求和最简写法_第1张图片

解释:

  1. Scanner scanner = new Scanner(System.in);:创建一个 Scanner 对象来从标准输入(通常是键盘)读取数据。

  2. System.out.print("请输入一个整数: ");:向用户打印提示信息,要求输入一个整数。

  3. int n = scanner.nextInt();:从用户那里读取一个整数并将其存储在变量 n 中。

  4. int sum = sum(n);:调用 sum 方法来计算从1到 n 的所有整数之和,并将结果存储在变量 sum 中。

  5. System.out.println("1 + 2 + 3 + ... + " + n + " = " + sum);:打印出1到 n 的所有整数的和。

  6. scanner.close();:关闭 Scanner 对象,这是一个好习惯,以避免潜在的资源泄露。

  7. private static int sum(int i) {:定义了一个私有静态方法 sum,它接受一个整数参数 i

  8. return (i == 1) ? 1 : i + sum(i - 1);:这是递归的关键部分。如果 i 等于1,方法返回1(递归的基本情况)。否则,方法返回 i 加上对 sum(i - 1) 的调用的结果(递归的步骤)。这样,它递归地将 in 减少到1,并计算所有这些值的和。

扩展:

 

java三元表达式讲解:

 

Java中的三元运算符是一种简洁的方式来进行条件判断,其基本形式如下:

variable = Expression1 ? Expression2 : Expression3;

这里的 Expression1 是一个条件表达式,它的结果必须是布尔值(即 truefalse)。Expression2Expression3 可以是任何类型的表达式,但它们的类型必须相同,或者能够被晋升到一个共同的类型。

三元运算符的工作原理如下:

  • 如果 Expression1 的结果为 true,则整个三元表达式的结果为 Expression2 的值。
  • 如果 Expression1 的结果为 false,则整个三元表达式的结果为 Expression3 的值。

示例:

public class TernaryExpressionExample {

    public static void main(String[] args) {
        TernaryExpressionExample example = new TernaryExpressionExample();
        int num1 = 5;
        int num2 = 10;
        
        int max = example.getMaxValue(num1, num2);
        System.out.println("较大的数是:" + max);
    }

    // 使用三元表达式在方法中比较两个数并返回较大的数
    public int getMaxValue(int a, int b) {
        return (a > b) ? a : b;
    }
}

 

运行截图:

java递归算法 -求和最简写法_第2张图片

 

 解释:

  1. TernaryExpressionExample example = new TernaryExpressionExample();:这行代码创建了一个 TernaryExpressionExample 类的实例对象,命名为 example。这个对象用于访问类中的方法和属性。

  2. int num1 = 5;int num2 = 10;:这两行代码声明并初始化了两个整数变量 num1num2,分别赋值为5和10。

  3. int max = example.getMaxValue(num1, num2);:这行代码调用了 example 对象的 getMaxValue 方法,将 num1num2 作为参数传递给这个方法,并将返回值赋给了 max 变量。这个方法使用三元表达式来比较 ab 的大小,然后返回较大的数。

  4. System.out.println("较大的数是:" + max);:这行代码使用 System.out.println 方法将字符串 "较大的数是:" 和 max 的值打印到控制台。

  5. public int getMaxValue(int a, int b) {:这是一个方法的定义,名为 getMaxValue,它接受两个整数参数 ab

  6. return (a > b) ? a : b;:在 getMaxValue 方法中,使用了三元表达式来比较 ab 的大小。如果 a 大于 b,则返回 a,否则返回 b

注意事项:

三元运算符常用于简化代码,特别是在需要基于条件为变量赋值的情况下。不过,应该注意的是,过度使用三元运算符可能会使代码难以阅读和维护,特别是当嵌套多个三元运算符时。在这种情况下,使用传统的 if-else 语句可能是更好的选择。 

 

你可能感兴趣的:(java知识点,算法)