1. 程式人生 > 其它 >JAVA方法03---遞迴與計算器編寫

JAVA方法03---遞迴與計算器編寫

JAVA方法03

遞迴

  • 遞迴就是:A方法呼叫A方法,就是自己呼叫自己
  • 利用遞迴可以用簡單的程式來解決一些複雜的問題,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可以描述出解題的過程所需要的多此重複計算,大大減少了程式的程式碼。遞迴的能力在於用有限的語句來定義物件的無限集合
  • 遞迴包含2個部分
    • 遞迴頭:什麼時候不呼叫自身方法。如果沒有頭,將陷入死迴圈。
    • 遞迴體:什麼時候需要呼叫自身方法。
package com.xu.method;

public class Demo05 {
    public static void main(String[] args) {
        Demo05 test = new Demo05();
        test.test();


    }
    public void test(){
        test();//會導致出錯
    }

}
package com.xu.method;

public class Demo06 {

    public static void main(String[] args) {
        System.out.println(f(5));

    }

    //5! 5*4*3*2*1
    public static int f(int n){
        if(n==1){
            return 1;
        }else{
            return n*f(n-1);
        }

    }
}

練習

做一個簡單計算器

package com.xu.method;

import java.util.Scanner;

public class CalculatorDemo {
    static Scanner s = new Scanner(System.in);
    public static void main(String[] args) {
        boolean flag = true;
        int i = 1;
        while(flag){
            if(i==1){
                System.out.println("歡迎來到xu的計算器");
            calculator();
            System.out.println("==============================");
            i++;

            }else {
                System.out.println("請問要繼續使用計算器嗎? Y:繼續 N:不繼續");
                String a = s.next();
                if (a.equals("Y")) {
                    calculator();
                    System.out.println("==========================");
                } else if (a.equals("N")) {
                    flag = false;
                    System.out.println("停止使用計算器");
                }
            }

        }
        s.close();
    }


    public static void calculator(){

        System.out.println("請輸入第一個數字:");
        double num1 = s.nextDouble();

        System.out.println("請輸入運算子:");
        String operator = s.next();

        System.out.println("請輸入第二個數字");
        double num2 = s.nextDouble();

        switch(operator){
            case"+":
                add(num1,num2);
                break;
            case"-":
                minus(num1,num2);
                break;
            case"*":
                plus(num1,num2);
                break;
            case"/":
                division(num1,num2);
                break;
            default:
                System.out.println("請輸入正確的運算子");
                break;
        }
    }

    
    public static void add (double num1,double num2){
        double result = num1 + num2;
        System.out.println(num1+"+"+num2+"="+result);
    }
    public static void minus(double num1,double num2){
        double result = num1 - num2;
        System.out.println(num1+"-"+num2+"="+result);
    }
    public static void plus(double num1,double num2){
        double result = num1 * num2;
        System.out.println(num1+"*"+num2+"="+result);
    }
    public static void division(double num1,double num2){
        if(num2==0){
            System.out.println("分母不可為0,請重新輸入");
            return;
        }else{
            double result = num1 / num2;
            System.out.println(num1+"/"+num2+"="+result);
        }
    }
}