用java编写程序
1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问12个月内每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21....
2.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。程序分析:采取逆向思维的方法,从后往前推断。

解决方案 »

  1.   

    第一题:public class Fibonacci {
    int fib(int n) {
    if (n < 2)
    return 1;
    return (fib(n - 2) + fib(n - 1));
    } public static void main(String[] args) {
    Fibonacci f = new Fibonacci();
    for (int i = 0; i < 12; i++) {
    if (i < 2) {
    System.out.print( f.fib(i)+" :");
    } else {
    System.out.print(f.fib(i)+" :");
    }
    }
    }
    }
    第二题等下发
      

  2.   

    这个题好像是ACM的初级练习题吧?
      

  3.   

    public class Fibonacci {
    public static void main(String[] args) {
    int[] peach = new int[10];
    peach[9] = 1;
    // 下面利用的是数组和循环将每天的桃子数量都求出来了
    for (int i = peach.length - 1; i > 0; i--) {
    peach[i - 1] = 2 * (peach[i] + 1);
    }
    for (int i = 0; i < peach.length; i++) {
    System.out.println(peach[i]);
    }
    System.out.println("第一天的桃子数:" + getPeach_Num(10, 1));
    } public static int getPeach_Num(int day, int peach_num) {
    if (day == 1)
    return peach_num;
    else if (day < 1 || peach_num < 0)
    return 0;
    else
    return getPeach_Num(day - 1, (peach_num + 1) * 2);
    }}
    类名命名不规范哈,将就了 自己改改
      

  4.   


                    int last = 1;
    System.out.println("第10天还有"+last+"个!");
    for(int i=9;i>0;i--){
    last = (last+1)*2;
    System.out.println("第"+i+"天还有"+last+"个!");
    }
    System.out.println("total>>>>"+last);第10天还有1个!
    第9天还有4个!
    第8天还有10个!
    第7天还有22个!
    第6天还有46个!
    第5天还有94个!
    第4天还有190个!
    第3天还有382个!
    第2天还有766个!
    第1天还有1534个!
      

  5.   

    第二题
    int a=1;
    for(int i=1;i<10;i++){
    a=(a+1)*2;
    }

    System.out.println(a);
      

  6.   

    public int testAdd(int a)
      {   
      if(a==1)
      {
      return 1;
      }
      else if(a==2)
      {
      return 1;
      }
      else
      {
      return testAdd(a-1)+testAdd(a-2);
      }
      }参数为月份。
      

  7.   

    第二题答案:
    int x = 1;
    for (int i = 10; i >= 1; i--) {
    if (i == 10) {
    x = 1;
    } else {
    x = (x +1)* 2;
    }
    }
    System.out.println(x);
      

  8.   

    int lastDay=1;
    for(int i=10;i>0;i--){
    System.out.println(lastDay);
    lastDay=(lastDay+1)*2;
    }
      

  9.   

    第一题答案:287
    public static int ss(int months){
    int rabbits=1;
    for(int i=1;i<=months;i++){
    if(i>=3){
    rabbits=rabbits+1;
    rabbits+=ss(months-i+1);
    }
    }
    return rabbits;

    }
      

  10.   

    第二题很简单  
    int n=1;
    for(int i=0;i<9;i++){
        n=(n+1)*2
    }//9次以后为第一天摘完以后剩下的果实数量故第一天共摘了n+2个