从零开始学Java【12】
从零开始学Java【12】
学习视频:https://www.bilibili.com/video/BV12J41137hu?p=50
递归

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

例子:阶乘

通过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);
}
}
}
输入如下:一个数+空格+运算符+另一个数。则输出结果。

总结
代码中
double a = scanner.nextDouble();
String x = scanner.next();
double b = scanner.nextDouble();
意味着输入的时候,是一个数+空格+运算符+一个数才有效。
该运算器还可以用可变参数来进行优化。不过因为还没学到数组,对它还不是很熟悉。
先改进一下加法:

还不会输入数组,先赋值1,2,3,然后直接运行sum方法就可以实现加法效果。
其中i为遍历数组长度,可以累加数组的每个元素,这算是一种模板,直接用就行。

浙公网安备 33010602011771号