A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丹霞似锦 中级黑马   /  2016-7-26 22:32  /  682 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Demo {
/**
  * 需求:斐波那契数列
  * 有一对兔子,从第三个月起都生一对兔子,小兔子长到第三个月后每一对都生一对兔子,加入兔子都不死,问第20个月共有多少兔子
  *
  * 月份:  1 2 3 4 5 6 7 8 9 10 11...
  * 兔子(对): 1 1 2 3 5 8 13 21 34 55 89...
  */
public static void main(String[] args) {
  /**
   * 使用for循环
   * 定义一个数组,长度是20,每一个元素就是兔子的对数
   */
  
       int[] arr = new int[20];
       arr[0]=1;
       arr[1]=1;
  
       for(int x=2;x<arr.length;x++){
              arr[x] = arr[x-1]+arr[x-2];
        }
        System.out.println(arr[19]);
        System.out.println("======================");
  
        System.out.println(getCount(20));
        }
/**
  * 使用递归
  * 递归方法作用:计算对应月份的兔子对数
  */
     public static int getCount(int n){
             if(n==1||n==2)
                  return 1;
             else
                  return (getCount(n-1)+getCount(n-2));
      }
}

但是如果只求斐波那契数列 1、1、2、3、5、8、13、21、34......
  求第30位数是多少, 用递归算法实现就简单多了
public class Test{
        public static void main (String[] args){
              getJieCeng(30);
         }
         public static int getJieCeng(int n){
               if(n==1||n==2)
               return 1;
               else
               return getJieCeng(n-1)+getJieCeng(n-2);
       }
}

评分

参与人数 1黑马币 +6 收起 理由
胡诗亮66 + 6 赞一个!

查看全部评分

1 个回复

正序浏览
规律,出口
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马