遞歸 遞歸就是自己調用自己! 遞歸的意思就是不停的調用自己,但是我們要知道的是我們的電腦資源是有限的,一般來說遞歸的層數不能太深。 遞歸主要包含兩個部分:遞歸頭和遞歸體 遞歸頭:什麼時候不調用自身方法。如果沒有,將陷入死迴圈。 遞歸體:什麼時候需要調用自身方法。 舉個例子: 我們用階乘來測試一下遞 ...
遞歸
- 遞歸就是自己調用自己!
- 遞歸的意思就是不停的調用自己,但是我們要知道的是我們的電腦資源是有限的,一般來說遞歸的層數不能太深。
遞歸主要包含兩個部分:遞歸頭和遞歸體
- 遞歸頭:什麼時候不調用自身方法。如果沒有,將陷入死迴圈。
- 遞歸體:什麼時候需要調用自身方法。
舉個例子:
我們用階乘來測試一下遞歸:
public class Demo06 {
public static void main(String[] args) {
//階乘 eg:4的階乘,就是4!=4*3*2*1
System.out.println(j(5));
}
public static int j(int n){
if (n==1){
return 1;
}else {
return n*j(n-1);
}
}
}
解析:可以看出我們是要求一個4的階乘,下麵寫了一個方法來求階乘,方法裡面有一個int類型的參數n。當n為4的時候不滿足if語句那麼就執行else中的語句,返回一個n*f(n-1),也就是4f(3),再把3帶入這個方法,就變成4×3×2f(2),,最後當n==1時,滿足上面if的條件,返回結果為120
輸出:
120
練習:寫一個簡單的計算器程式
要求:
- 寫4個方法:加減乘除
- 利用迴圈+switch進行用戶交互
- 傳遞需要操作的兩個數
- 輸出結果
public class Demo07 {
public static void main(String[] args) {
x();
}
public static double x(){
Scanner sc=new Scanner(System.in);
System.out.println("請輸入要計算的第一個數:");
double m=sc.nextDouble();
System.out.println("輸入要執行的運算符號(+、-、*、/)中的一個");
String k=sc.next();
System.out.println("輸入第二個數進行計算:");
double n=sc.nextDouble();
switch (k){
case"+":
System.out.println(plus(m,n));
break;
case "-":
System.out.println(subtract(m,n));
break;
case "*":
System.out.println(multiply(m,n));
break;
case "/":
System.out.println(divide(m,n));
break;
default:
System.out.println("您輸入的運算符有誤");
}
return 0;
}
//編寫四個方法,等
public static double plus(double m,double n){
return m+n;
};
public static double subtract(double m,double n){
return m-n;
};
public static double multiply(double m,double n){
return m*n;
};
public static double divide(double m,double n){
return m/n;
};
}
輸入數字進行測試:
請輸入要計算的第一個數:
5
輸入要執行的運算符號(+、-、*、/)中的一個
/
輸入第二個數進行計算:
5
1.0