黑马程序员技术交流社区

标题: 关于斐波那契数列用递归解题会出现的问题 [打印本页]

作者: Dreamkele    时间: 2016-9-24 21:51
标题: 关于斐波那契数列用递归解题会出现的问题
public class Digui{
        /*
        1.用循环实现不死神兔
        故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契。
        在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,
        再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡,
        问:一对刚出生的兔子.第100个月繁殖多少对兔子?(利用BigInteger完成)
         1 1 2 3 5 8 13 21
         */
        public static void main(String[] args) {
                public static void main(String[] args) {
                demo1(100);//用数组做第100个月
               
                System.out.println(fun(100));//递归解法会出现问题!!!!
        }
       
        private static void demo1(int num) {
                //数组做
                BigInteger[] arr = new BigInteger[1000];
                arr[0] = new BigInteger("0");
                arr[1] = new BigInteger("1");
                arr[2] = new BigInteger("1");
                for (int i = 3; i < arr.length; i++) {
                        arr[i] = arr[i-1].add(arr[i-2]);
                }
                System.out.println(arr[num]);
        }

        private static BigInteger fun(int num) {
                if (num==1 || num ==2) {
                        return new BigInteger("1");
                }else{
                       
                        return fun(num-2).add(fun(num -1));
                       
                }
               
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2