递归
递归就是A方法调用A方法,自己调用自己
利用递归可以用简单的程序来解决一些复杂的问题,通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的能力在于用有限的语句来定义对象的无限集合
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法,如果没有头,这将陷入死循环
- 递归体:什么时候需要调用自身方法
package com.dsh.method;
public class Demo05 {
public static void main(String[] args) {
Demo05 test=new Demo05();
test.test();
}
public void test(){
test();//死循环
}
}
package com.dsh.method;
public class Demo06 {
//阶乘
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n){
if(n==1){
return 1;
}else{
return n*f(n-1);
}
}
}
作业:
写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现
思路:
写四个方法:加减乘除
利用循环+switch进行用户交互
传递需要操作的两个数
输出结果
package com.dsh.method;
import java.util.Scanner;
public class practice {
public static void main(String[] args) {
while (true) {
Scanner scanner = new Scanner(System.in);
double a = scanner.nextDouble();
String operator = scanner.next();
double b = scanner.nextDouble();
switch (operator) {
case "+":
plus(a, b);
break;
case "-":
reduce(a, b);
break;
case "*":
multiply(a, b);
break;
case "/":
divide(a, b);
break;
default:
System.out.println("仅支持两个数字的计算");
}
}
}
//加法
public static void plus(double a,double b){
double result =0;
result =a+b;
System.out.println(result);
}
//减法
public static void reduce(double a,double b){
double result =0;
result =a-b;
System.out.println(result);
}
//乘法
public static void multiply(double a,double b){
double result=0;
result =a*b;
System.out.println(result);
}
//除法
public static void divide (double a,double b){
double result=0;
result =a/b;
System.out.println(result);
}
}