题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?   
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
public class sss {
   public static void main(String [] args){
int age =10;
int x;
for(x=1;x<5;x++){
age = age+2;
}
System.out.println("第五个人是"+age);
}
}这个算是递归么? 我这个是从第一个人开始算到第五个
请问咋样从第五个算到第一个呢?

解决方案 »

  1.   


    public class Test{
    public static void main(String[] args){
    System.out.print(ageOfIndex(5));
    }
    public static int ageOfIndex(int n){
    if(n<=0) return -1;
    if(n == 1) return 10;
    return ageOfIndex(n-1)+ 2;
    }
    }
      

  2.   

    嗯  你的代码不算是递归。
    我写了个  你看看
    public class Test {
    public static void main(String args[]){
    System.out.println(Age(5));
    }

    public static int Age(int n){
    if(n == 1)
    return 10;
    else
    return Age(n-1) + 2;//这里就是递归调用Age方法
    }}
      

  3.   

    public class Recursion
    {
    private static int age = 10; public static int doAge(int n)
    { return n == 1 ? age : 2 + doAge(n - 1);
    } public static void main(String[] args)
    {
    System.out.println(doAge(5));
    }}
      

  4.   


    public class TestSize {
    public static void main(String[] args) {
    System.out.println(ageAdd(5, 2, 10));
    }
    public static int ageAdd(int num, int space, int lastAge) {
    if(num <=0 ){
    return -1;
    }else if(num == 1) {
    return lastAge;
    }
    return space + ageAdd(num-1, space, lastAge);
    }
    }
      

  5.   

    前一阵刚做了这个题,贴上来给你吧。。新手请多指教
    public class Ex23_Age { public static void main(String[] args) {
    System.out.println(getAge(5));
    } private static int getAge(int i) {
    if(i == 1) {
    return 10;
    } else {
    return getAge(i - 1) + 2;
    }
    }}
      

  6.   

    不错,看看我这个://age为第二个到第五个比前一个多的年龄数;
    public int f(int i)
    {
      if(i==1)retrun 10;
      else return age[i]+f(i-1);
    }
      

  7.   

    你那哪是递归,递归就是单独独立写一个function,反复调用。
    2楼的,ls的,你都可以看看。