从零开始学Java【12】

从零开始学Java【12】


​ 学习视频:https://www.bilibili.com/video/BV12J41137hu?p=50

递归

image-20220429105526161

如果是这种“自己调用自己”,则一定会报错,也就是栈溢出,递归需要有正确的使用方法(另:栈溢出是很可怕的)

image-20220429110030700

例子:阶乘

image-20220429111425992

通过return 返回自身来实现递归

而由于递归对栈有很大压力,所以能不用递归就不用递归,比如图中f(1000),程序就崩掉了,因为堆栈太多,电脑很难运行下去。

总结

①递归思想可以学习

②能不用递归就不用递归,很容易崩

练习:设计计算器

要求:实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现。

思路推荐:

  • 写四个方法:加减乘除
  • 利用循环+switch进行用户交互
  • 传递需要操作的两位数
  • 输出结果

实现1

package com.zhang.Method;

import java.util.Scanner;

public class Demo07 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextDouble()){
            double a = scanner.nextDouble();
            String x = scanner.next();
            double b = scanner.nextDouble();

        switch (x){
            case "+":
                add(a,b);
                break;
            case "-":
                sub(a,b);
                break;
            case "*":
                multiply(a,b);
                break;
            case "/":
                division(a,b);
                break;
         }
            System.out.println("输入任意字母退出");
        }
        scanner.close();
    }
    //加法
    public static void add(double a,double b){
        System.out.println(a+b);

    }
    //减法
    public static void sub(double a,double b){
        System.out.println(a-b);

    }
    //乘法
    public static void multiply(double a,double b){
        System.out.println(a*b);

    }
    //除法
    public static void division(double a,double b){
                if (b == 0){
                    System.out.println("分母不能为0");

                }else {
                    System.out.println(a/b);

                }

    }

}

输入如下:一个数+空格+运算符+另一个数。则输出结果。

image-20220429123301929

总结

代码中

double a = scanner.nextDouble();
String x = scanner.next();
double b = scanner.nextDouble();

意味着输入的时候,是一个数+空格+运算符+一个数才有效。

该运算器还可以用可变参数来进行优化。不过因为还没学到数组,对它还不是很熟悉。

先改进一下加法:

image-20220429142115069

还不会输入数组,先赋值1,2,3,然后直接运行sum方法就可以实现加法效果。

其中i为遍历数组长度,可以累加数组的每个元素,这算是一种模板,直接用就行。

posted @ 2022-04-29 14:25  机智的小柴胡  阅读(28)  评论(0)    收藏  举报