
假设有一个场景:5个人坐在一起。当你问第五个人的年龄时,他说他比第四个人大2岁;而第四个人说他比第三个人大2岁;第三个人说他比第二个人大2岁;第二个人说他比第一个人大2岁;最后,第一个人告诉你他是10岁。那么,第五个人到底多大呢?
这个问题可以通过递归的方式来解决。递归是一种在程序中调用自身的方法来解决问题的技术。在这个例子中,我们可以定义一个方法来根据每个人相对于前一个人的年龄差来计算他们的年龄。

下面是一个简单的Java程序,用于计算第五个人的年龄:
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 + " 岁");
}
}calculateAge 方法接受一个整数参数 n,表示第 n 个人。n 等于 1 时,返回 10,因为第一个人的年龄是 10 岁。n-1,并加上 2(因为每个人都比前一个人大 2 岁)。main 方法中,我们调用 calculateAge(5) 来计算第五个人的年龄,并将结果打印出来。
运行上述程序,输出结果为:
第五个人的年龄是: 18 岁这个问题可以通过递归或者简单的循环来解决。这里我将提供两种方法的Java代码示例:一种是使用递归的方法,另一种是使用循环的方法。
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);
}
}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);
}
}calculateAge 方法接受一个参数 person,表示当前询问的人。person 是 1,返回 10(第一个人的年龄)。calculateAge(person - 1) 并加 2,表示当前人的年龄比前一个人大 2 岁。main 方法中,调用 calculateAge(5) 来计算第五个人的年龄。calculateAge 方法初始化第一个人的年龄为 10。for 循环从第 2 个人到第 5 个人,每次循环将当前年龄加 2。main 方法中,调用 calculateAge() 来计算第五个人的年龄。
这两种方法都能正确地计算出第五个人的年龄,结果都是 18 岁。你可以根据实际情况选择适合的方法。这个问题可以通过递归或迭代的方式来解决。下面我将分别介绍两种方法的Java实现。
递归方法通过函数自身调用自己来解决问题,直到达到一个已知条件(在这个问题中,第一个人的年龄是已知的)。
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);
}
}迭代方法通过循环逐步计算每个人的年龄,直到计算出第五个人的年龄。
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);
}
}getAge 方法接收一个参数 person,表示当前询问的人。person 是 1,直接返回 10(第一个人的年龄)。getAge(person - 1) 获取前一个人的年龄,并加上 2。age 为 10(第一个人的年龄)。for 循环从 2 到 5,每次循环将 age 增加 2,表示每个人比前一个人大 2 岁。age,即第五个人的年龄。
无论是使用递归还是迭代方法,最终输出的结果都是:
第五个人的年龄是: 18这两种方法都可以有效地解决问题,选择哪种方法取决于具体的需求和个人偏好。递归方法代码更简洁,但可能会在大规模数据处理时导致栈溢出;而迭代方法则更加稳定,适用于各种规模的数据。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。