个人写作项目:斐波那契数
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。
参与类1:
class Solution {
public int fib(int n) {
if(n<=1)
return n;
else
return fib(n-1)+fib(n-2);
}
}
参与类2:
class Solution {
public int fib(int n) {
int x=0,y=0,z=1;
if(n<2)
return n;
for(int i=2;i<=n;i++){
x=y;
y=z;
z=x+y;
}
return z;
}
}
参与类3:
class Solution {
public int fib(int n) {
int []num=new int[3];
num[2]=1;
if(n<2)
return n;
for(int i=2;i<=n;i++){
num[0]=num[1];
num[1]=num[2];
num[2]=num[0]+num[1];
}
return num[2];
}
}
参与类4:
class Solution {
public int fib(int n) {
int[] num = new int[n+1];
if (n < 2)
return n;
else
num[1] = 1;
for (int i = 2; i <= n; i++) {
num[i] = num[i - 1] + num[i - 2];
}
return num[n];
}
}
思路:
1.这种是比较简单的递归类问题,熟悉使用递归方法(相比于动态好慢)
2.用动态思路,三个变量循环解决问题
3.用数组限定空间,用数组元素循环解决
4.建立数组运算,将数据存入数组中返回
问题:
1.运行速度太慢(8ms)
2.内存损耗太高(39.48MB)
3.内存损耗减少了一点(39.36MB,属实没整明白)
4.没有啥优势,空间还大了点(39.40MB)
注意创建数组空间,当计算F(2)时是有三个数组元素
总结:
熟悉算法,较为基础的算法题,多尝试算法进行提升