什麼是遞歸調用-自已調自己 什麼是遞歸算法

/*
 * 遞歸:方法自已調用自己
 *      遞歸的分類:2種
 *         1.直接遞歸稱爲方法自身調用自己
 *         2.間接遞歸可以使用A方法調用B方法,B方法調用C方法,C方法再調用A方法
 *      注意事項:
 *         1.遞歸一定要有條件限定,保證能停止下來,否則會發生棧內存溢出
 *         2.在遞歸雖然有限定條件,但是遞歸次數不能太多。否則也會發生棧內存溢出
 *         2.構造方法,禁止遞歸
 *         學習視頻分享:javacto.taobao.com
 */

 

遞歸:方法自已調用自己 案例

public class Test01 {

	public static void main(String[] args) {
		//a();
		b(1);
	}

	/**
	 * 在遞歸中雖然有限定條件,但是遞歸次數不能太多,否同也會發生棧內存溢出
	 * 11738  每次不一樣
	 * 學習視頻分享:javacto.taobao.com
	 * @param i
	 */
	private static void b(int i) {
		
		System.out.println(i);
		if(i==200000){
			return ;
		}
		
		b(++i);
	}

	/**
	 * 遞歸一定要有條件限定,保證能夠停止下來,否則會發生
	 * Exception in thread "main" java.lang.StackOverflowError
	 * 學習視頻分享:javacto.taobao.com
	 */
	private static void a() {
		System.out.println("a方法");
		a();
		
	}
	
	/**
	 * 構造方法禁止遞歸
	 *  編譯錯誤,構造方法是創建對象使用的,一直遞歸會導致內存中有無數多個對象
	 *  學習視頻分享:javacto.taobao.com
	 */
	public Test01(){
		//Test01();
	}
}

練習:使用遞歸計算1-n之間的和

/**
 * 練習:
 * 使用遞歸計算1-n之間的和
 */
public class Test02 {

	public static void main(String[] args) {
		int s = sum(100);
		System.out.println(s);
	}

	/**
	 * 定義一個方法,使用遞歸計算1-n之間的和
	 *  1+2+3+..n
	 *  n+(n-1) +(n-1)+..1;
	 *  已知 最大值n  最小值1
	 *  使用遞歸必需明確
	 *  	1.遞歸的結束條件  獲取到1的時候結束
	 *  	2.遞歸的目標  獲取下一個被加的數字(n-1)
	 *  
	 *  學習視頻分享:javacto.taobao.com
	 */
	private static int sum(int n) {
		//獲取到1的時候
		if(n==1){
			return 1;
		}
		//獲取下一個被加的數字 (n-1)
		return n+sum(n-1);
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章