1. 程式人生 > >關於Java中的遞迴操作--(以將一個正整型十進位制數轉換為二進位制數為例)

關於Java中的遞迴操作--(以將一個正整型十進位制數轉換為二進位制數為例)

遞迴操作是函式一直在呼叫自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的程式碼量。

遞迴呼叫的條件:

1、遞迴呼叫一定發生在函式上;

2、遞迴呼叫一個有結束條件,程式每執行一次都會去修改這個結束條件。

例:將一個正整型十進位制數轉換為二進位制數方法是十進位制數字除以2取餘數,接著倒著取。

方法一:常規做法(用迴圈來做):

public class Conversion {
	public static void main(String args[]){
		int num =11;//假設正十進位制整數為11
		String Str ="";//儲存轉換的結果
		while(num !=0){//表示還有數字,還可以繼續執行
			Str =(num % 2) + Str;//儲存結果
			num =num/2;//改變num 內容
		}	
		System.out.println(Str);//輸出二進位制數
	}
}
方法二:遞迴做法:
public class Conversion {
	public static void main(String args[]){
		toBinary(11);//在主函式中呼叫toBinary函式,很簡化主函式的程式碼量
	}
	public static void toBinary(int num){
		if(num/2==0){//此時已經計算到了結束
			System.out.print(num%2);
		}
		else{
			toBinary(num/2);//向下繼續計算
			System.out.print(num%2);
		}
	}
}
遞迴操作和常規函式操作相比可以簡化程式碼,讓程式碼結構更加明瞭,但是遞迴操作也有一定的弊端:

1:遞迴操作利用不當會導致記憶體溢位;

2:遞迴操作並不是一次兩次就能夠完全搞懂的,要多寫多練才能掌握的更加牢靠;

3:遞迴操作並不是我們的唯一選擇,因為大多數的遞迴操作都能用迴圈來完成,只是利用迴圈的時候程式碼結構不是很好。

以上都是本人的一點小經驗,僅供大家參考。