本文介绍:
本篇文章主要讲解了斐波那契数列的特点以及如何使用代码来实现,本次使用两个方法来实现,一个是常规的方法,另一个是递归的方法
斐波那契数列介绍:
斐波那契数列指的是这样一个数列1,1,2,3,5,8,13,21,34,55……
我们发现从第三项开始,每一项都等于前两项之和。
斐波那契数列的原理:
上文介绍的斐波那契数列的特点,普通的方法就是根据上面的特点来写的,所以也不需要特别的来分析。就是除第一和第二项,其余都是前两项的和所得到的,可以看下列的代码来理解。
public static int fi(int index) {
//如果index为1或2时返回1
if(index == 1 || index == 2) {
return 1;
}
//保存第一个和第二个的值
int a = 1, b = 1;
//定义临时保存第三个值的变量
int c = 0;
//从第三项开始进行遍历
for(int i = 3; i <= index; i++) {
//第i项等于前两项的和
c = a + b;
//a和b都要向后面移动一个
a = b;
b = c;
}
return c;
}
所以下面主要是用来介绍使用递归的方法来实现,为了更好的理解,需要图片和代码相结合的来看。
递归原理的图片:(下面是对第5个斐波那契数的分析)
最后返回 5 ,就是第5个斐波那契数的值
下面是代码(虽然代码很简单,但是完全理解还是有一定的难度的):
public static int fibonacci(int index) {
if(index == 1 || index == 2) {
return 1;
}
return fibonacci(index - 1) + fibonacci(index - 2);
}
全部代码:
//斐波那契数列
public class TestFibonacci {
public static void main(String[] args) {
// 1 1 2 3 5 8 13
System.out.println("第5项的值:"+fi(5));
System.out.println("第10项的值:"+fibonacci(10));
}
//递归实现
public static int fibonacci(int index) {
if(index == 1 || index == 2) {
return 1;
}
return fibonacci(index - 1) + fibonacci(index - 2);
}
//常规实现
public static int fi(int index) {
//如果index为1或2时返回1
if(index == 1 || index == 2) {
return 1;
}
//保存第一个和第二个的值
int a = 1, b = 1;
//定义临时保存第三个值的变量
int c = 0;
//从第三项开始进行遍历
for(int i = 3; i <= index; i++) {
//第i项等于前两项的和
c = a + b;
//a和b都要向后面移动一个
a = b;
b = c;
}
return c;
}
}
运行结果:
第5项的值:5
第10项的值:55
生命不息,编程不止!加油!