斐波那契数列
题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从1开始,第0项为1)。
n<=39
解题思路:
斐波那契数列:1,1,2,3,5,8,13…从1,1开始,下一个数字是前两个数字之和。
注意点:
1.注意题目上说n<=39,所以需要判断n的大小。
2.使用递归的时候,虽然写出来能跑,但是发现运行时间真长,足足1234ms,重复计算就是浪费时间,而且看到讨论区里说的一直递归容易使得栈溢出。仔细想了一下确实是这样。
3.使用不是递归的,直接算出来存在数组里反而快,仅用17ms而且占用内存也下降了。
具体代码:
1.递归:
public class Solution {
public int Fibonacci(int n) {
if(n>39){
return 0;
}
if(n<=1){
return n;
}
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
2.不是递归:
public class Solution {
public int Fibonacci(int n) {
if(n<=1){
return n;
}
int[] array=new int[n];
int i;
array[0]=1;
array[1]=1;
for(i=2;i<n;i++)
{
array[i]=array[i-1]+array[i-2];
}
return array[n-1];
}
}
总结:
java新建一个数组:(参考的博客链接)
https://www.cnblogs.com/CAOXIAOYANG/p/6003436.html