2021/1/18 斐波那契数列

斐波那契数列

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

1 解题思路

  1. 声明定义一个由-1填充的数组arr,在索引为n的地方存储f(n),-1表示尚未存储数据;
  2. 若n = 0或1,直接返回n本身;
  3. 若不满足2,判断arr[n]若不是-1,说明已经存储过f(n),不需要再进行计算,直接返回arr[n];
  4. 若不满足3,进行计算f(n) = f(n - 1) + f(n - 2),并在arr[n]存储f(n)结果;

2 Java代码实现

public class Solution {
    public int Fibonacci(int n) {
        // 1. 声明定义一个由-1填充的数组arr,在索引为n的地方存储f(n),-1表示尚未存储数据;
        int[] arr = new int[128];
        for (int i = 0; i < arr.length; ++i) {
            arr[i] = -1;
        }
        return fib(arr, n);
    }

    private int fib(int[] arr, int n) {
        // 2. 若n = 0 或 1,直接返回n本身;
        if (n == 0 || n == 1) return n;
        // 3. 若不满足2,判断arr[n]若不是-1,说明已经存储过f(n),不需要再进行计算,直接返回arr[n];
        if (arr[n] != -1) {
            return arr[n];
        } else {
        // 4. 若不满足3,进行计算f(n) = f(n - 1) + f(n - 2),并在arr[n]存储f(n)结果;
            int result = fib(arr, n - 1) + fib(arr, n - 2);
            arr[n] = result;
            return result;
        }
    }
}
全部评论

相关推荐

头像 会员标识
11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务