美文网首页
求斐波那契数列第n个数的值

求斐波那契数列第n个数的值

作者: junjun2018 | 来源:发表于2018-08-02 09:05 被阅读0次

    1,1,2,3,5,8,13。。。
    规律就是后面的一个数等于前面两个数的和。

    public class Feibonaqie {
        public static void main(String[] args) {
            //1,1,2,3,5,8
            int num = getNumByLoop(6);
            int num1 = getNumByRecursor(7);
    
            System.out.println(num);
            System.out.println(num1);
        }
    
        //循环实现
        private static int getNumByLoop(int n) {
            //定义前两个数
            int num1 = 1;
            int num2 = 1;
            int num3 = 0;
            if (n == 1) return 1;
            if (n == 2) return 1;
    
            //经观察,求第n个数,循环的次数为n-2
            for (int i = 0; i < n - 2; i++) {
                //将原本2位置的数当做1位置的数,累加的结果作为2位置的数
                num3 = num1 + num2;
                num1 = num2;
                num2 = num3;
            }
            return num3;
        }
    
        //递归实现
        public static int getNumByRecursor(int n) {
            //递归一定要有结束条件
            if (n == 1 || n == 2) {
                return 1;
            }else{
                return getNumByRecursor(n - 1) + getNumByRecursor(n - 2);
            }
        }
    }
    

    递归是相当耗费资源的,就像细胞分裂一样,要最终都分解到不能分解才能得出结果。而使用循环只不过循环了n-2次。递归经常用在树的遍历中。例如遍历某文件夹下的所有文件。递归是没效率可言的。
    研究递归,最关键是的,找到返回条件。推荐电影《盗梦空间》,经典应用八皇后,汉诺塔

    相关文章

      网友评论

          本文标题:求斐波那契数列第n个数的值

          本文链接:https://www.haomeiwen.com/subject/tbtjvftx.html