遞歸簡單來說就是自己調用自己,
遞歸構造包括兩個部分:
1.定義遞歸頭:什么時候需要調用自身方法,如果沒有頭,將陷入死循環
2.遞歸體:調用自身方法干什么
遞歸是自己調用自己的方法,用條件來判斷調用什么時候停止!
斐波那契數列數列的遞歸實現: F(n)=F(n-1)+F(n-2)
package test; public class Test { public static long fibonacci(int n) { if(n==0||n==1) return 1; else { return fibonacci(n-1)+fibonacci(n-2); } } public static void main(String[] args) { for(int i=0;i<10;i++) { long num = fibonacci(i); System.out.print(num+" "); } } }
斐波那契數列數列的非遞歸實現: F(n)=F(n-1)+F(n-2)
package test; public class Test { public static long fibonacci2(int n) { long arr[] = new long[n+1]; arr[0]=0; arr[1]=1; //n不能為0,因為n為0時,arr大小為1,arr[1]越界。 for(int i=2;i<=n;i++) { arr[i]=arr[i-1]+arr[i-2]; } return arr[n]; } public static void main(String[] args) { for(int i=1;i<10;i++) { long num = fibonacci2(i); System.out.print(num+" "); } } }