递归,计算器

发布时间 2023-06-26 18:44:16作者: 新至所向

递归

递归

  • A方法调用B方法,我们很容易理解!

  • 递归就是:A方法调用A方法!就是自己调用自己

  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

  • 递归结构包括两个部分:

    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
    • 递归体:什么时候需要调用自身方法。

    递归头的含义如下:

    1. 递归头是指递归函数中不需要进一步的递归调用就可以直接计算答案的情况。
    2. 递归头的作用是结束递归,防止陷入死循环。
    3. 递归头一般是一个if语句,判断是否满足某个条件。

    递归体的含义如下:

    1. 递归体是指递归函数中需要进一步的递归调用来求解的情况。
    2. 递归体是指递归函数中一个问题的结果与其子问题的结果之间的关系。
    3. 递归体是指递归函数中根据当前函数参数或返回值调用自身的语句。

求f(10)的阶乘

package com.xin.method;

public class Day62606 {
    public static void main(String[] args) {
        System.out.println(f(10));
    }
    //求阶乘  f(3)>>3*f(2)>>3*2*f(1)>>3*2*1
    public static int f(int n){
        if (n==1){
            return 1;
        }else {
            return n*f(n-1);
        }
    }
}

写一个计算器,要求实现加减乘除功能,并且能够循环接受数据,通过用户交互实现。
思路推荐:
写四个方法:加减乘除
利用循环+switch
传递需要操作两个数
输出结果

package com.xin.method;

import java.util.Scanner;

public class Day62607 {
    //写一个计算器,要求实现加减乘除,并且能够接收新的数据,通过用户交互实现
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String nextInput="m";
        while (nextInput.equals("m")) {
            System.out.println("请输入符号与a,b值:");
            String s = scanner.next();
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            double c = 0;
            switch (s) {
                case "+":
                    c = add(a, b);
                    break;
                case "-":
                    c = sub(a, b);
                    break;
                case "*":
                    c = mul(a, b);
                    break;
                case "/":
                    if (b == 0) {
                        System.out.println("除数不能为0");
                    } else {
                        c = div(a, b);
                    }
                    break;
                default:
                    System.out.println("输入错误");
                    break;
            }
            System.out.println(c);
            System.out.println("使用m继续");
            nextInput=scanner.next();
        }
        System.out.println("结束程序");
        scanner.close();
    }
    public static int add(int a,int b){
        return a+b;
    }
    public static int sub(int a,int b){
         return a-b;
    }
    public static int mul(int a,int b){
        return a*b;
    }
    public static double div(double a,double b){
        return a/b;
    }
}