Java--递归
A方法调用B方法,我们很容易理解!
递归就是:A方法调用A方法!就是自己调用自己
利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包括两个部分:
-
递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
-
递归体:什么时候需要调用自身方法。
public static void main(String args[]) {
//计算阶乘
//阶乘,如5!,表示从1开始,依次乘到5 即5!=1*2*3*4*5
//对于任意正整数N,都有N!=1*2*3*...*N
System.out.println(factorial(5));
}
public static int factorial(int n) {
if (n == 1) {
return 1;
}else {
return n*factorial(n-1);
}
}
//输出结果
120
递归方便程序员,难为了电脑!!!
写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现。
思路推荐:
-
写4个方法:加减乘除
-
利用循环+switch进行用户交互
-
传递需要操作的两个数
-
输出结果
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
String isNext = "Y";
while (isNext.equals("Y")) {
double i1 = 0;
double i2 = 0;
double result = 0;
String oper = null;
System.out.println("请输入第一个操作数:");
i1 = scanner.nextDouble();
System.out.println("请输入运算符:");
oper = scanner.next();
System.out.println("请输入第二个操作数:");
i2 = scanner.nextDouble();
switch (oper) {
case "+":
System.out.println("您选择"+oper+"运算符:");
result = add(i1,i2);
System.out.println("结果为"+i1+oper+i2+"="+result);
break;
case "-":
System.out.println("您选择"+oper+"运算符:");
result = sub(i1,i2);
System.out.println("结果为"+i1+oper+i2+"="+result);
break;
case "*":
System.out.println("您选择"+oper+"运算符:");
result = mul(i1,i2);
System.out.println("结果为"+i1+oper+i2+"="+result);
break;
case "/":
if (i2==0) {
System.out.println("除数不能为0");
}else {
System.out.println("您选择"+oper+"运算符:");
result = div(i1,i2);
System.out.println("结果为"+i1+oper+i2+"="+result);
}
break;
default:
System.out.println("输入运算符错误!");
break;
}
System.out.println(