详解java方法与递归
目錄
一 方法(類似于C語言中的函數)
1 方法的基本語法:
2 注意事項
3 方法調用的執行過程
4 方法的重載
重載的規則(滿足以下三個特點):
5 方法的意義
二 遞歸
前提條件:
概念:
遞歸執行過程分析:
執行過程圖?
遞歸的總結:
三 遞歸練習
一 方法(類似于C語言中的函數)
1 方法的基本語法:
// 方法定義 public static 方法返回值 方法名稱([參數類型 形參 ...]){方法體代碼;[return 返回值]; } // 方法調用 返回值變量 = 方法名稱(實參...);示例:
import java.util.Scanner;public class demotwo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int i = sc.nextInt();int j = sc.nextInt();int ret=add(i,j);//方法的調用System.out.println(ret);}//利用方法實現兩個數相加public static int add(int a,int b){//定義方法return a+b;} }2 注意事項
(1)public static是關鍵字,具有特殊的含義
(2)方法定義時,必須要指定參數類型,可以沒有參數
(3)方法定義時,可以有返回值,也可以沒有返回值,沒有返回值時,返回類型應該定義為void
(4)方法定義時的參數為形參,方法調用時就是實參
(5)方法必須定義在類的里面,代碼書寫調用的位置可以在main()函數上方,也可以寫在下方
(6)java中不存在函數聲明這種概念
3 方法調用的執行過程
(1)定義方法的時候,不會執行方法的代碼,只有調用的時候才會執行
(2)方法被調用的時候,實參的值會賦值給形參
(3)參數傳遞完畢后,就會執行方法體代碼
(4)當方法執行完畢之后(遇到return語句),回到方法被調用的位置,繼續往下執行
(5)方法是可以被多次調用的
例題:
public class demotwo {//計算 1! + 2! + 3! + 4! + 5!public static void main(String[] args) {int su = 0;for(int i=1;i<=5;i++){//產生五個數據,利用求階乘,把五個數的階乘相加起來su += sum(i);}System.out.println(su);}public static int sum(int n){int ret =1;for(int j = 1;j<=n;j++){//實現階乘的辦法ret *=j;}return ret;} }4 方法的重載
重載的規則(滿足以下三個特點):
在同一個類下或者繼承關系下:
(1)方法名相同
(2)方法的參數不同(參數的個數或者參數類型不同)
(3)參數的返回值類型不影響重載(可以理解為與返回值類型沒有什么關系)
5 方法的意義
(1)能夠模塊化的組織代碼(尤其是代碼規模是比較復雜的時候)
(2)讓代碼更加簡單,提高代碼的可讀性
(3)可以重復利用,一個代碼可以在多個位置調用
(4)可以直接調用現有方法開發,比較便捷
二 遞歸
前提條件:
(1)有一個趨于終止的條件
(2)自己要調用自己
概念:
遞歸:一個方法在執行的過程中調用自身,就稱為遞歸
遞歸執行過程分析:
public static void main(String[] args) {int n = 5;int ret = factor(n);System.out.println("ret = " + ret); } public static int factor(int n) {System.out.println("函數開始, n = " + n);if (n == 1) {System.out.println("函數結束, n = 1 ret = 1");return 1;}int ret = n * factor(n - 1);System.out.println("函數結束, n = " + n + " ret = " + ret);return ret; } // 執行結果 函數開始, n = 5 函數開始, n = 4 函數開始, n = 3 函數開始, n = 2 函數開始, n = 1 函數結束, n = 1 ret = 1 函數結束, n = 2 ret = 2 函數結束, n = 3 ret = 6 函數結束, n = 4 ret = 24 函數結束, n = 5 ret = 120 ret = 120執行過程圖?
?結合執行過程圖來看遞歸就會顯得思路比較清晰,解決問題就會顯得有方法與思路
遞歸的總結:
對于遞歸,有些問題使用遞歸就會顯得非常簡單(比如二叉樹以及斐波那契數列等),有些程序代碼遞歸與非遞歸(迭代循環)都可以去實現,那么這個時候就推薦大家使用非遞歸(迭代循環),效率會顯得高一些。
三 遞歸練習
面對遞歸,我們需要一些典例來開導一下我們,典例鏈接:
CSDN
總結
以上是生活随笔為你收集整理的详解java方法与递归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中递归实例
- 下一篇: 解析java中的数组