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

© 暴走的牛奶 中级黑马   /  2015-8-28 23:10  /  153 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast.digui;
/*
*  使用递归实现功能
*     出口,停下来
*     计算规律
*     
*  1+2+3+..+100=5050
*  阶乘 1*2*3*4 int  2147483647
*  
*  有1对小兔子,第一个月不生,第二个月不生,从第三个月开始,每个月都生下一对小兔子
*  生下来的小兔子,第一个月不生,第二个月不生,从第三个月开始,每个月都生下一对小兔子
*  假设所有的兔子都不死,12个月后,一共有多少对小兔子
*  
*  1 2 3 4 5 6 7
*  从第三个月开始,每个数,是前面两个数只和
*  1 1 2 3 5 8 13 21 34 55 89 144
*  数学计算公式  第n项 = 第n-1项+第n-2项
*  n>2
*/
public class DiGuiDemo1 {
        public static void main(String[] args) {
                //int sum = getSum(100);
                /*int sum = getJieCheng(10);
                System.out.println(sum);*/
               
                int x = tuZi(12);
                System.out.println(x);
        }
        /*
         * 利用方法递归,实现斐波那契数列
         */
        public static int tuZi(int month){
                if(month==1)
                        return 1;
                if(month == 2)
                        return 1;
                return tuZi(month-1)+tuZi(month-2);
        }
       
        /*
         * 利用数组赋值,实现斐波那契数列
         * 索引,求和实现
         */
        public static void arrTuZi(int month){
                int[] arr = new int[month];
                        arr[0] = 1;
                        arr[1] = 1;
                for(int x = 2 ; x < month ;x++){
                        arr[x] = arr[x-1]+arr[x-2];
                }
                System.out.println(arr[arr.length-1]);
        }
       
       
       
        /*
         *  使用递归,实现阶乘
         *  高斯算法+,变成乘法
         *  注意: 阶乘的计算结果数据很大,造成int类型不够
         */
         public static int getJieCheng(int number){
                 if( number == 1)
                         return 1;
                 return number * getJieCheng(number- 1 );
         }
       
       
        /*
         * 使用递归实现高斯算法
         * getSum方法求和的
         * 每次计算加数不同
         * 100+(100-1)....+   + 1 (100-99)
         * 加数是1 的时候不在计算
         *
         * 规律: 100+99+98+97....+1 = 5050
         * number=100 +number-1
         *
         */
        public static int getSum(int number){
                if(number  == 1)
                        return 1;
                return number+getSum(number-1);
        }
       
        //for循环实现1+...?的和
        /*public static int getSum(int number){
                int sum = 0 ;
                for(int x = 1 ; x <= number ; x++){
                        sum = sum + x;
                }
                return sum;
        }*/
}

0 个回复

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