首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【详解】使用Java解决递归问题:五人年龄计算

【详解】使用Java解决递归问题:五人年龄计算

原创
作者头像
大盘鸡拌面
发布2026-03-04 15:08:50
发布2026-03-04 15:08:50
1120
举报

使用Java解决递归问题:五人年龄计算

背景介绍

假设有一个场景:5个人坐在一起。当你问第五个人的年龄时,他说他比第四个人大2岁;而第四个人说他比第三个人大2岁;第三个人说他比第二个人大2岁;第二个人说他比第一个人大2岁;最后,第一个人告诉你他是10岁。那么,第五个人到底多大呢?

这个问题可以通过递归的方式来解决。递归是一种在程序中调用自身的方法来解决问题的技术。在这个例子中,我们可以定义一个方法来根据每个人相对于前一个人的年龄差来计算他们的年龄。

Java代码实现

下面是一个简单的Java程序,用于计算第五个人的年龄:

代码语言:javascript
复制
public class AgeCalculator {

    /**
     * 计算第n个人的年龄。
     * @param n 第n个人
     * @return 第n个人的年龄
     */
    public static int calculateAge(int n) {
        if (n == 1) {
            return 10; // 第一个人的年龄
        } else {
            return calculateAge(n - 1) + 2; // 每个人比前一个人大2岁
        }
    }

    public static void main(String[] args) {
        int fifthPersonAge = calculateAge(5);
        System.out.println("第五个人的年龄是: " + fifthPersonAge + " 岁");
    }
}
代码解析
  1. 方法定义:​​calculateAge​​ 方法接受一个整数参数 ​​n​​,表示第 ​​n​​ 个人。
  2. 递归终止条件:当 ​​n​​ 等于 1 时,返回 10,因为第一个人的年龄是 10 岁。
  3. 递归调用:对于其他情况,方法会调用自身,传入 ​​n-1​​,并加上 2(因为每个人都比前一个人大 2 岁)。
  4. 主方法:在 ​​main​​ 方法中,我们调用 ​​calculateAge(5)​​ 来计算第五个人的年龄,并将结果打印出来。

运行结果

运行上述程序,输出结果为:

代码语言:javascript
复制
第五个人的年龄是: 18 岁

这个问题可以通过递归或者简单的循环来解决。这里我将提供两种方法的Java代码示例:一种是使用递归的方法,另一种是使用循环的方法。

方法一:使用递归
代码语言:javascript
复制
public class AgeCalculator {

    public static int calculateAge(int person) {
        if (person == 1) {
            return 10; // 第一个人的年龄
        } else {
            return calculateAge(person - 1) + 2; // 每个人都比前一个人大2岁
        }
    }

    public static void main(String[] args) {
        int fifthPersonAge = calculateAge(5);
        System.out.println("第五个人的年龄是: " + fifthPersonAge);
    }
}
方法二:使用循环
代码语言:javascript
复制
public class AgeCalculator {

    public static int calculateAge() {
        int firstPersonAge = 10; // 第一个人的年龄
        int currentAge = firstPersonAge;
        
        for (int i = 2; i <= 5; i++) {
            currentAge += 2; // 每个人都比前一个人大2岁
        }
        
        return currentAge;
    }

    public static void main(String[] args) {
        int fifthPersonAge = calculateAge();
        System.out.println("第五个人的年龄是: " + fifthPersonAge);
    }
}
解释
  1. 递归方法
  • ​calculateAge​​ 方法接受一个参数 ​​person​​,表示当前询问的人。
  • 如果 ​​person​​ 是 1,返回 10(第一个人的年龄)。
  • 否则,递归调用 ​​calculateAge(person - 1)​​ 并加 2,表示当前人的年龄比前一个人大 2 岁。
  • 在 ​​main​​ 方法中,调用 ​​calculateAge(5)​​ 来计算第五个人的年龄。
  1. 循环方法
  • ​calculateAge​​ 方法初始化第一个人的年龄为 10。
  • 使用一个 ​​for​​ 循环从第 2 个人到第 5 个人,每次循环将当前年龄加 2。
  • 最后返回计算得到的第五个人的年龄。
  • 在 ​​main​​ 方法中,调用 ​​calculateAge()​​ 来计算第五个人的年龄。

这两种方法都能正确地计算出第五个人的年龄,结果都是 18 岁。你可以根据实际情况选择适合的方法。这个问题可以通过递归或迭代的方式来解决。下面我将分别介绍两种方法的Java实现。

方法一:递归

递归方法通过函数自身调用自己来解决问题,直到达到一个已知条件(在这个问题中,第一个人的年龄是已知的)。

代码语言:javascript
复制
public class AgeCalculator {

    public static int getAge(int person) {
        if (person == 1) {
            return 10; // 第一个人的年龄
        } else {
            return getAge(person - 1) + 2; // 每个人都比前一个人大2岁
        }
    }

    public static void main(String[] args) {
        int fifthPersonAge = getAge(5);
        System.out.println("第五个人的年龄是: " + fifthPersonAge);
    }
}
方法二:迭代

迭代方法通过循环逐步计算每个人的年龄,直到计算出第五个人的年龄。

代码语言:javascript
复制
public class AgeCalculator {

    public static int getAge() {
        int age = 10; // 第一个人的年龄
        for (int i = 2; i <= 5; i++) {
            age += 2; // 每个人都比前一个人大2岁
        }
        return age;
    }

    public static void main(String[] args) {
        int fifthPersonAge = getAge();
        System.out.println("第五个人的年龄是: " + fifthPersonAge);
    }
}
解释
  1. 递归方法
  • ​getAge​​ 方法接收一个参数 ​​person​​,表示当前询问的人。
  • 如果 ​​person​​ 是 1,直接返回 10(第一个人的年龄)。
  • 否则,递归调用 ​​getAge(person - 1)​​ 获取前一个人的年龄,并加上 2。
  1. 迭代方法
  • 初始化 ​​age​​ 为 10(第一个人的年龄)。
  • 使用一个 ​​for​​ 循环从 2 到 5,每次循环将 ​​age​​ 增加 2,表示每个人比前一个人大 2 岁。
  • 最后返回 ​​age​​,即第五个人的年龄。
输出

无论是使用递归还是迭代方法,最终输出的结果都是:

代码语言:javascript
复制
第五个人的年龄是: 18

这两种方法都可以有效地解决问题,选择哪种方法取决于具体的需求和个人偏好。递归方法代码更简洁,但可能会在大规模数据处理时导致栈溢出;而迭代方法则更加稳定,适用于各种规模的数据。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用Java解决递归问题:五人年龄计算
    • 背景介绍
    • Java代码实现
      • 代码解析
    • 运行结果
      • 方法一:使用递归
      • 方法二:使用循环
      • 解释
      • 方法一:递归
      • 方法二:迭代
      • 解释
      • 输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档