斐波那契数列 功能实现
在斐波那契数列中定义了有如下函数
本题可以采用 递归的方式完成,但是会有大量浪费,如果要计算 f(10), 根据公式 要计算 f(9)+f(8) 但是 计算 f(9),又会计算一次 f(8)的值,所以出现大量重叠
于是可以换一种方式 ,从下往上倒推
依次计算出 f(2),f(3)~~f(n)。这样就不会发生多余的计算
代码如下
/**
*
*/
/***
* @author 18071
* @Date 2019年2月21日
* 功能:斐波那契数列 功能实现
* n<=0,返回 0
* n=1,返回1
* n》1,返回 f(n-1)+f(n-2)
***/
//若使用 传统递归 会造成大量的 不必要的内存消耗 ,现在 采取循环方式 解决
public class test {
public static void main(String args[]) {
System.out.println(fbn(0));
System.out.println(fbn(3));
System.out.println(fbn(5));
System.out.println(fbn(9));
}
public static int fbn(int n) {
int x=0;
if(n<=0) {
x=0;
}
else if(n==1) {
x=1;
}
//n>1
else {
int s=0;//f(0)
int b=1;//f(1)
//n为3,结果为 f(2)+f(1) =f(1)+f(0)+f(1)
for(int i=2;i<=n;i++) {
int temp=s+b;//f(n-1)+(n-2)
s=b;
b=temp;
x=b;
}
}
return x;
}
}
结果如图