遞迴會帶來大量的函數呼叫。這是不好的
A方法呼叫B方法,我們很容易理解
遞迴策略只需要少量的程式就可以描述出解題過程所需要的多次重複計算,大大減少了程式的程式碼量
遞迴的能力在於用有限的語句來定義物件的無限集合
遞迴頭:什麼時候不呼叫自身方法。如果沒有頭,將陷入死迴圈
遞迴體:什麼時候需要呼叫自身方法
遞迴會帶來大量的函數呼叫。這是不好的
基本結構
1 while( 布林表示式 ){ 2 //迴圈結構 3 }
只要布林表示式為true,迴圈就會一直執行下去
迴圈條件一直為true就會造成無限迴圈【死迴圈】,這是在正常程式下需要避免的
少部分情況下需要回圈一直執行下去。例如伺服器的請求響應監聽等
1 //例子:從1加到100求和 2 //程式碼主要部分 3 while(i<=100){ 4 sum+=i; 5 i++; 6 }
對於while'語句而言,如果不滿足條件,則不能進入迴圈,但有時候我們需要即使不滿足條件的情況下,程式也要至少執行一次
do.....while迴圈和while迴圈相似,不同的是:do....while迴圈至少會執行一次
語法結構
1 do{ 2 //程式碼語句 3 }while(布林表示式);
while與do-while的區別
while是先判斷後執行。do-while是先執行後判斷
do-while總是保證迴圈體至少會被迴圈一次!這是它們的主要區別
1 //例子:從1加到100求和 2 //程式碼主要部分 3 do{ 4 sum+=i; 5 i++; 6 }while(i<=100);
雖然所有的迴圈結構都可以使用while和do....while表示,但Java提供了另一種語句:for迴圈
for迴圈相較與其它二者更高效,執行速度快
格式如下
1 for(初始化;布林表示式;迭代式){ 2 //程式碼語句 3 }
Java5
種引入了一種主要用於陣列的增強型for迴圈主要是用來遍歷陣列
與集合
的
格式如下:
1 for(宣告語句:表示式){ 2 //程式碼語句 3 } 4 5 6 //例子如下: 7 int[] numbers={1,2,3,4,5}; 8 for(int x:numbers){ 9 System.out.println("陣列中的元素為"+x) 10 }
宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。
其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等。
表示式:表示式是要存取的陣列名,或者是返回值為陣列的方法。
另加:陣列的靜態與動態定義