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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 荒丶 中级黑马   /  2016-4-11 21:58  /  424 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class FibonacciNum {

        /**
         * 斐波那契数列
         * 1 1 2 3 5 8 13 21
         * 从第三个开始.后面一个数是前面两个 数的和
         * 两种求法.
         * 1.通过数组来求
         * 2.通过递归来求
         * @param args
         */
        public static void main(String[] args) {
                arrFibonacciNum(5);
                System.out.println(diguiFibonacciNum(0));
        }
        /*
         * 通过递归来求斐波那契数列
         * 分析.
         * 返回值.int  参数列表 int num
         *   1 = fun(1)
         *   1 = fun(2)
         *   2 = fun(1) + fun(2)
         *   ...
         */
        public static int diguiFibonacciNum(int num){
                //如果不加健壮性判断.栈内存会溢出
                if(num <= 0) {
                        System.out.println("请输入正确的数字");
                        return -1;
                }
                //重点在这里.当num=1或者2 返回1
                if(num == 1 || num == 2)
                        return 1;
                return diguiFibonacciNum(num - 2) + diguiFibonacciNum(num - 1 );
        }

        /*
         * 通过数组来求
         * 分析.
         * 1.定义一个数组,长度为size
         * 2.把数组的第一个元素和第二个元素设定为1.
         * 3.第三个元素是前一个元素和前前元素的和.
         * 4.遍历这个数组
         */
        public static void arrFibonacciNum(int size) {
                if(size <= 0) {
                        System.out.println("请输入 正确的长度");
                        return;
                }
                if(size <= 2) {
                        for (int i = 1; i <= size; i++) {
                                System.out.println(1);
                        }
                        return;
                }
                int[] arr = new int[size];
                arr[0] = 1;
                arr[1] = 1;
                for (int i = 2; i < arr.length; i++) {
                        arr[i] = arr[i-1] + arr[i-2];
                }
                for (int i : arr) {
                        System.out.print(i + " ");
                }
        }
}

评分

参与人数 1黑马币 +20 收起 理由
ynztlxdeai + 20 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马