数学历史上有个很经典的斐波那契数列。。。
斐波那契数列是什么?
1,1,2,3,5,8,13。。。
这个就是斐波那契数列。
今天面试被问到了斐波那契数列的实现方式。现在写下这个实现方式,总结下。。
通过简单分析数列,我们能直观得出规律,每个数列是前2个数的和,用数学表达式来说就是 ni = n(i-1) +n(i-1)(注意,这里的i是下标,不是相乘)
有这个规律,我们就能开始代码了。
第一种方式。
@Test
public void Tester1() {
int a =1;
int b = 1;
int c = 0;
System.out.print(a+"\n"+b+"\n");
for (int i = 3; i < 20; i++) {
c = a +b;
a = b;
b = c;
System.out.println(c);
}
}
运行输出的结果为正确的斐波那契数列
第二种实现方式:
@Test
public void Tester2() {
int a =1;
int b = 1;
for (int i = 0; i < 20; i++) {
System.out.println(a+"\n"+b+"\n");
a = a+b;
b = a+b;
}
}
第三种实现方式:
@Test
public void Tester3() {
int[] intArray = new int[10];
intArray[0] = 1;
intArray[1] = 1;
for (int i = 0; i < intArray.length; i++) {
if (i>1) {
intArray[i] = intArray[i-1]+intArray[i-2];
}
System.out.println(intArray[i]+"\t");
}
}
简单总结下: 个人感觉中间关键的地方在于 处理前后2个值的关系上, 比如说我们直接打印第一第二个值,1和1 , 那么从第三个开始, 就是2, 然后第四个值就是第三个加上第二个的和,也就是 1+2 等于3, 依此类推。结果就出来了。