1、代码
package com.tyutypj.com;
/**
* 递归法+循环法
*/
public class Fibonacci1 {
public static int fibonacci(int n) {
if (n <= 0) {
return 0;
}
if (n == 1 || n == 2) {
return 1;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
public static long fibonacci1(int n){
if(n == 0){
return 0;
}
if(n == 1 || n == 2){
return 1;
}
long result_behind = 1;
long result_before = 1;
long result_new = 2;
for(int i=3;i<=n;i++){
result_new = result_behind + result_before;
result_behind = result_before;
result_before = result_new;
}
return result_new;
}
public static void main(String[] args) {
long A=System.nanoTime();
System.out.println("执行代码块/方法");
System.out.println(fibonacci(9));
long B=System.nanoTime();
System.out.println(fibonacci1(9));
long C=System.nanoTime();
System.out.println("fibonacci(9)运行时间: "+(B-A)+"ns");
System.out.println("fibonacci1(9)运行时间: "+(C-B)+"ns");
}
}
2、运行结果
3、结论
由上图可知:与递归法相比,循环法的运行速度更快,且效率更高。