递归实现形式
public class TestRecursion { public static void main(String[] args) { System.out.println(F(6)); } static long F(int n){ if(n==1||n==2) return 1; else return F(n-1)+F(n-2); } }
非递归实现形式public class TestFab { public static void main(String[] args) { System.out.println(f(6)); } static long f(int n){ if(n==1||n==2) return 1; long f1=1L; long f2=1L; long f=0; for(int i=3;i<=n;i++){ f=f1+f2; f1=f2; f2=f; } return f; } }
非递归实现中,应该注意在循环的过程中找到一个相似的过程,通过数据的交换实现。