用Java语言编写有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,.....,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁。通过递归算法求第n个人多大年纪。
时间: 2024-09-26 17:16:37 浏览: 44
作业基于java的哲学家就餐问题源码+项目说明.zip
在Java中,你可以使用递归函数来解决这个问题。这是一个典型的递归问题,可以按照以下步骤编写:
```java
public class Main {
public static void main(String[] args) {
int age = findAge(1, 10); // 第1个人的年龄为10
System.out.println("第" + n + "个人的年龄是:" + age);
}
public static int findAge(int currentPerson, int previousPersonAge) {
if (currentPerson == 2) { // 当询问到第2个人时,直接返回上一个人的年龄加2
return previousPersonAge + 2;
} else { // 对于其他的人,递归地询问下一个,并加上2
return findAge(currentPerson - 1, previousPersonAge + 2);
}
}
}
```
在这个`findAge`函数中,`currentPerson`表示当前询问的人,`previousPersonAge`表示上一个人的年龄。当`currentPerson`等于2时,因为已知第1个人的年龄,所以可以直接计算出第2个人的年龄。如果`currentPerson`大于2,则递归调用自身,将`currentPerson`减1并把上一辈人的年龄+2作为新的`previousPersonAge`。
阅读全文