05 方法 遞迴

2022-06-19 01:24:17 字數 2881 閱讀 1828

封裝了特定功能的**塊且可以被重複使用,這就是方法(method)。

形如:

[訪問修飾符] 返回值型別 方法名字(引數列表)

public

int add(int a,int

b)

理解:ü 修飾符:封裝性時再講,決定了方法的工作範圍

ü 返回值型別:必選,如果沒有返回值,須寫void。方法只能返回乙個值

ü 方法名:符合識別符號命名規則

ü 引數列表:可以0個、

1個、多個,需要同時說明型別。稱為形式引數

ü 方法體:完成具體功能。如果有返回值,必須有return語句;如果沒有返回值,預設最後一條語句是

return

,可以省略。

方法和方法之間可以相互呼叫(call/invoke)

public

static

void

main(string args)

形式引數(形參):方法在定義時的引數稱為形式引數。

實際引數(實參

):方法在呼叫的過程中傳入的引數,稱為實參。

實參和形參的工作原理

方法呼叫時

實參 -> 形參:值

複製傳遞。

在乙個類中可以定義多個相同名稱引數列表不同的方法,我們把這個現場稱為方法過載。

方法過載判斷的條件:

[1]同一

類[2]方法名稱相同

[3]引數

列表不同(型別不同、個數不同、順序不同)

引入概念-方法簽名(method sign)

在程式語言中,方法的名字形參列表的型別構成了方法簽名。

同乙個類中,方法名稱相同但方法簽名不同即構成方法過載。

public

class

test02

//add(int,int,int)

public

static

int add(int a,int b,int

c)//

add(float,float)

public

static

float add(float a,float

b)//

add(int,float)

public

static

float add(int a,float

b)//

add(float,int)

public

static

float add(float a,int

b)//

add(int,float)

/*public static float add(int b,float a)

*///

add(float,int)

/*public static float add(float b,int a)

*/public

static

void

main(string args)

}

呼叫時,會根據不同的引數列表選擇對應的方法。 

總結:– 在同乙個類中

– 方法的名稱相同

– 引數的型別,個數,順序不同

– 與方法的修飾符和返回值型別無關

方法自身呼叫自身的過程叫做方法的遞迴(recursion)

遞迴問題的特點

– 乙個問題可被分解為若干層簡單的子問題

– 子問題和其上層問題的解決方案一致

– 外層問題的解決依賴於子問題的解決

需求:求5的

階乘(5!)

分析:5! = 5*4!

4! = 4*3!

3! = 3*2!

2! = 2*1!

1! = 1;

public

class

test03

return n * rec(n-1);}

public

static

void

main(string args)

}

遞迴執行過程

遞迴效率稍低。

遞迴結構包括兩個部分:

總結– 簡單的程式

– 但是遞迴呼叫會占用大量的系統堆疊,記憶體耗用多,

– 在遞迴呼叫層次多時速度要比迴圈慢的多

– 任何可用遞迴解決的問題也能使用迭代解決。

– 當遞迴方法可以更加自然地反映問題,並且易於理解和除錯,並且不強調效率問題時,可以採用遞迴;

– 在要求高效能的情況下盡量避免使用遞迴,遞迴既花時間又耗記憶體。

05 方法重寫

在繼承關係中,子類如果定義了乙個與父類方法簽名完全相同的方法,被稱為覆寫 override 加上 override可以讓編譯器幫助檢查是否進行了正確的覆寫。例如,在person類中,我們定義了run 方法 class person 在子類student中,覆寫這個run 方法 class stude...

05方法以及過載

1.方法的概念方法是一系列 指令的集合,用於實現特定的功能,可以重複使用,減少 的冗餘。2.方法的定義位置 和main方法並列存在。即在class類中,main方法之外。格式 無返回值 public static void 方法名稱 形參列表 有返回值 public static 返回值型別 方法名...

2020 11 22 方法遞迴

遞迴 方法自身呼叫自身,很耗費棧記憶體,能不用盡量不用。遞迴必須有結束條件,沒有結束條件一定會發生棧記憶體溢位錯誤,即使結束條件正確也可能發生棧記憶體溢位錯誤,因為遞迴的太深 遞迴例項 public class lianxi14 以下 可以被重複呼叫,重複呼叫dosome方法,呼叫一次就分配相應的記...