天天看點

方法和遞歸方法遞歸

方法

  1. 概念

    方法就是完成特定功能的代碼塊

  2. 格式
修飾符 傳回值類型 方法名(參數類型 參數名1,參數類型 參數名2 ....){
		方法體;
		return 傳回值;
	}
           
方法和遞歸方法遞歸
  1. 注意事項

    A:方法不調用不執行

    B:方法與方法是平級關系,不能嵌套定義

    C:方法定義的時候參數之間用逗号隔開

    D:方法調用的時候不用在傳遞參數類型

    E:如果方法由明确的傳回值,一定要由return帶回一個值

  2. 方法的練習

    在寫一個方法之前,要先明确兩個東西,一個是傳回值類型,也就是明确功能結果的資料類型,一個是參數清單,也就是你需要傳遞幾個參數,以及每一個參數的資料類型。接下來,我們通過實際例子認識一下如何編寫一個方法

    練習一:求兩個資料之和

package org.westos.demo;

public class MethodDemo {
    public static void main(String[] args) {
        int result = method(10,20);//調用方法
        System.out.println(result);
    }
    public static int method(int a,int b){//傳入兩個int類型參數
        int result = a + b;
        return result;
    }
}
           

運作代碼得到:

方法和遞歸方法遞歸

練習二:擷取兩個數的最大值

package org.westos.demo;

public class MethodDemo {
    public static void main(String[] args) {
        int result = method(10,20);//調用方法
        System.out.println(result);
    }
    public static int method(int a,int b){//傳入兩個int類型參數
        int result = a > b ? a : b;
        return result;
    }
}
           

得到結果:

方法和遞歸方法遞歸
  1. 方法重載

    在同一個類中,允許存在一個以上的同名方法,隻要它們的參數清單不同,與傳回值無關

    參數清單不同:(1)參數個數不同 (2)參數類型不同

//求2-3個整數之和
    public static int method(int a,int b){//傳入兩個int類型參數
        int result = a + b;
        return result;
    }
    public static double method(int a,double b){//傳入一個int類型參數,一個double類型參數
        double result = a + b;
        return result;
    }
    public static int method(int a,int b,int c){//傳入三個個int類型參數
        int result = a + b + c;
        return result;
    }
           

以上三個方法就屬于方法重載,根據調用方法時傳入的參數不同,選擇對應的方法調用

遞歸

  1. 概念

    方法定義中調用方法本身

  2. 注意事項

    (1)方法中要有出口,否則容易造成死遞歸

    (2)次數不能太多,否則會導緻記憶體溢出

  3. 遞歸的練習

    運用遞歸的思想就是将一個大問題分成多個小問題,依次解決,還可以在小問題裡面再細分幾個問題。這樣,解決起來就簡單了,最終完成大問題的解決。舉個例子:求5的階乘

    我們先用遞歸的思想畫個簡單的示意圖:

    方法和遞歸方法遞歸
    再将這個思想用代碼實作:
package org.westos.demo;

public class DiGui {
    public static void main(String[] args) {
        int result = digui(5);
        System.out.println(result);
    }
    public static int digui(int n){
        if(n == 1){
            return 1;
        }else{
            return n * digui(n - 1);//展現遞歸思想,方法中調用方法
        }
    }
}
           

運作得到的結果:

方法和遞歸方法遞歸

這就是運用遞歸的思想解決問題,當然,直接代碼編寫也可以實作,但有時候會過于繁瑣,根據需求适當使用遞歸方法可以快速且友善的解決問題