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);
        }
    }
}

posted @   Joe_ximu  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
点击右上角即可分享
微信分享提示