zoukankan      html  css  js  c++  java
  • 9 斐波那契数列Fibonacci

    题目1:写一个函数,输入n,求Fibonacci数列的第n项。该数列定义如下:

    n=0时,f(n)=0;        

    n=1时,f(n)=1;        

    n>1时,f(n)=f(n-1)+f(n-2)

    1、 效率差的递归算法:时间复杂度以n的指数的方式递增。因为求f(10)=f(9)+f(8);f(9)=f(8)+f(7);f(8)=f(7)+f(6);可以看出有很多项是重复计算的。

    //斐波那契数列,递归。通过测试
    //f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)
    public class Fibonacci{
        public static void main(String[] args){
            System.out.println(fibonacci(8));
        }
        public static int fibonacci(int n){
            if(n<=0){//此处避免无法处理n<0的情况!!!
                return 0;
            }
            if(n==1){
                return 1;
            }
            return fibonacci(n-1)+fibonacci(n-2);
            }
    }
    
        

    2、进一步改进,非递归算法(时间复杂度O(n))

    //斐波那契数列,非递归。通过测试
    //f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)
    public class Fibonacci{
        public static void main(String[] args){
            System.out.println(fibonacci(2));
        }
        public static int fibonacci(int n){
            if(n<=0){//此处避免无法处理n<0的情况!!!
                return 0;
            }
            if(n==1){
                return 1;
            }
            int minusOne = 1;
            int minusTwo = 0;
            int fibN = 0;
            for(int i = 2; i<=n; i++){
                fibN = minusOne + minusTwo;             
                minusTwo = minusOne;
                minusOne = fibN;
            }
            return fibN;
        }
    }
    
        

     题目2:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶共多少种跳法。答案:斐波那契数列f(n)=f(n-1)+f(n-2)

     题目3:一只青蛙一次可以跳上1级台阶,也可以跳上2级……也可以跳上n级。求该青蛙跳上一个n级的台阶共多少种跳法。答案:数学归纳法可得f(n)=2n-1

     题目4:可以用2*1(单位:cm)的小矩形横着或者竖着去覆盖更大的矩形。请问8个2*1的小矩形无重叠覆盖一个2*8的大矩形,共有多少中方法?

        答案:f(8)=f(7)+f(6),依然是斐波那契数列问题。

  • 相关阅读:
    Python中的魔法方法【技能突破】
    Python简明教程:面向对象【新手必学】
    No such file or directory
    LaTeX Error: File ''picins.sty'' not Found.
    GCC编译过程中的各种not declared in this scope
    20.有效的括号-力扣
    c++标准库bitset文件
    c++标准库windows.h文件
    warning: control reaches end of non-void function
    c++标准库iostream文件
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3669388.html
Copyright © 2011-2022 走看看