Fibonacci数列代码实现

斐波那契数列

http://www.nowcoder.com/questionTerminal/c6c7742f5ba7442aada113136ddea0c3


public class Solution {
    //解法一  递归(不考虑效率与内存)
    public int FibonacciA(int n) {
     if(n == 0 || n == 1){
         return n;
     }
      if(n <= 39){
           return Fibonacci(n-1) + Fibonacci(n-2);
      }
       return -1;
    }
    
    //解法二  效率提高了,内存占用还是大
    public int FibonacciB(int n) {
        if( n > 39 || n < 0){
            return -1;
        }
     int answer[] = new int[n];
       answer[0] = 0;
       answer[1] = 1;
      for(int i = 2;i <= n;i++){
          answer[i] = answer[i-1] + answer[i-2];
      }
       return answer[n];
    }
    //解法三 内存占用还是大
    public int FibonacciC(int n) {
        if( n > 39 || n < 0){
            return -1;
        }
     
        if(n == 0 || n == 1){
            return n;
        }
        int result = 0;
        int temp1 = 0;
        int temp2 = 1;
        for(int i = 2;i <= n; i++){
            result = temp1 + temp2;
            temp1 = temp2;
            temp2 = result;
        }
        return result;
    }
    //解法四,与三类似,只是少了一个变量
    public int FibonacciD(int n) {
        if( n > 39 || n < 0){
            return -1;
        }
     
        if(n == 0 || n == 1){
            return n;
        }
        int result = 1;
        int temp1 = 0;
        for(int i = 2;i <= n; i++){
            result = result + temp1;
            temp1 = result - temp1;
        }
        return result;
    }
    //解法五 直接使用高中学过的Fibonacci数列的通项公式,或者利用学过的知识推导一下下,反正我不会。
    public int FibonacciE(int n) {
        double a = Math.sqrt(5.0);
        double temp1 = (1.0 + a)/2.0;
        double temp2 = (1.0 - a)/2.0;
        return (int)(1.0/a*(Math.pow(temp1, n) - Math.pow(temp2, n)));
    }
}

推导过程如下(百度的):

图片说明
全部评论

相关推荐

在下uptown:哈哈哈哈,大家仿佛形成了AI项目+商城的统一套路[笑cry不过该说不说整体还可以
点赞 评论 收藏
分享
04-02 10:09
门头沟学院 Java
用微笑面对困难:这里面问题还是很多的,我也不清楚为啥大家会感觉没啥问题。首先就是全栈开发实习9个月的内容都没有java实习生的内容多,1整个技术栈没看出太核心和难点的内容,感觉好像被拉过去打杂了,而且全栈基本上很容易被毙。里面能问的bug是在太多了比如L:继承 BaseMapper 可直接使用内置方法’。请问你的 BaseMapper 是如何扫描实体类注解如果瞬时产生 100 个上传任务,MySQL 的索引设计是否会有瓶颈?你做过分库分表或者索引优化吗?全栈的内容可以针对动态难点去搞,技能特长写在下面吧,你写了这么多技能,项目和实习体现了多少?你可以在项目里多做文章然后把这个放下去,从大致来看实习不算太水,有含金量你也要写上内容针对哨兵里面的节点变化能问出一万个问题,这个很容易就爆了。
提前批简历挂麻了怎么办
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务