首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >求Fibonacci数的最佳方法

求Fibonacci数的最佳方法
EN

Stack Overflow用户
提问于 2017-03-08 16:27:08
回答 2查看 952关注 0票数 0

斐波那契级数是0.诸若此类。它可以使用交换元素并显示出来,而我们可以通过数组获得它。我被要求在面试中使用递归和它的主要逻辑,

代码语言:javascript
运行
复制
int fib(int n){
if(n<1)
    return 1;
else
    return fib(n-1)+fib(n-2);}

它会产生大量的堆栈问题,因为我们在这里增加了复杂性。那么这里的最佳方式是什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-08 16:46:55

追忆创建一个逻辑,只计算每一个谎言麻木一次。

代码语言:javascript
运行
复制
static BigInteger[] fibNumbs = new BigInteger[10000];


public static void main(String[] args) {
        fibNumbs[1] = BigInteger.ONE;
        fibNumbs[2] = BigInteger.ONE;
        System.out.println(fibOf(10000));
    }

public static BigInteger fibOf(int n) {
        if (n <= 1) {
            return BigInteger.ONE;
        }

        if (fibNumbs[n - 1]==null) {
            fibNumbs[n - 1] = fibOf(n - 1);
        }

        if (fibNumbs[n - 2]==null) {
            fibNumbs[n - 2] = fibOf(n - 2);
        }

        return fibNumbs[n - 1].add(fibNumbs[n - 2]);
    }
票数 1
EN

Stack Overflow用户

发布于 2017-03-08 21:01:32

如果我告诉你两个连续的斐波纳契数,例如。a=3b=5,你能猜到下一个吗?这是两者的总和,所以它的8。现在使用a=5和新计算的数字b=8,您可以计算下一个数字吗?首先用两个0开始迭代,一个是1,另一个是你想要的每次迭代的数字索引,当你点击零的时候,a就是你的答案。这是一个O(n)算法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42676689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档