斐波那契级数是0.诸若此类。它可以使用交换元素并显示出来,而我们可以通过数组获得它。我被要求在面试中使用递归和它的主要逻辑,
int fib(int n){
if(n<1)
return 1;
else
return fib(n-1)+fib(n-2);}它会产生大量的堆栈问题,因为我们在这里增加了复杂性。那么这里的最佳方式是什么呢?
发布于 2017-03-08 16:46:55
追忆创建一个逻辑,只计算每一个谎言麻木一次。
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]);
}发布于 2017-03-08 21:01:32
如果我告诉你两个连续的斐波纳契数,例如。a=3和b=5,你能猜到下一个吗?这是两者的总和,所以它的8。现在使用a=5和新计算的数字b=8,您可以计算下一个数字吗?首先用两个0开始迭代,一个是1,另一个是你想要的每次迭代的数字索引,当你点击零的时候,a就是你的答案。这是一个O(n)算法。
https://stackoverflow.com/questions/42676689
复制相似问题