2018.3.31 java中的遞歸
阿新 • • 發佈:2018-03-31
lin package str static n-1 pre 特點 等於 com
java中的遞歸
1.概念
定義一個方法時,出現本方法調用本方法的過程,稱之為遞歸
2.特點
必然有一個邊界條件
使用遞歸代碼往往更簡潔,可讀性強
3.什麽時候使用遞歸
n的階乘和n的累加定義
f(n) =1
f(n)=f(n)*f(n-1)
4.普通實現與遞歸實現的比較
普通實現 //計算5的階乘 public class Demo { public static void main(String[] args) { int sum = 1; for (int i =5; i >=1; i--) { sum *= i; } System.out.println(sum); } } 遞歸實現: /** *在main函數外面定義方法,不然會報錯 * * 計算5的階乘(result = 5*4*3*2*1) */ public class Demo { public static void main(String[] args) { System.out.println(f(5)); } public static int f(int n) { if (1 == n){ return 1; }else{ return n * f(n - 1); } } }
6.按照遞歸的三個條件來分析
邊界條件:階乘,乘到最後一個數,返回1,程序執行到底
遞歸前進段:當前的參數不等於1的時候,繼續調用自身;
遞歸返回段:從最大的數開始乘,如果當前參數是5,那麽就是5*4,即5*(5-1)即n*(n-1)
7.經典遞歸算法實例----斐波那契數列
package com.lanqiao.demo2; /** * 斐波那契序列 * * @author qichunlin * */ public class Test { public static void main(String[] args) { System.out.println(f(4)); } public static int f(int n){ if(n==1||n==2){ return 1; }else{ return f(n-1)+f(n-2); } } }
2018.3.31 java中的遞歸