Java笔记_递归讲解
递归
- A方法调用B方法,我们很容易理解!
- 递归就是: A方法调用A方法!就是自己调用自己
- 利用递归可以用简单的程序来解决一些复杂的问题。 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
- 递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
package com.mike.method; import java.util.Scanner; public class Demo05 { //5! 5*4*3*2*1 public static void main(String[] args) { System.out.println("输入一个整数:"); Scanner scanner =new Scanner(System.in); int r=scanner.nextInt(); System.out.println("此整数的阶层为:"+f(r)); } public static int f(int n){ if (n==1){ return 1; }else { return n*f(n-1); } } }
计算器实现加减乘除
方法一
package com.mike.method; import java.util.Scanner; public class Demo06 { public static void main(String[] args) { java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入第一个数字:"); int num1 = s.nextInt(); System.out.print("请输入运算符:"); String operator = s.next(); System.out.print("请输入第二个数字:"); int num2 = s.nextInt(); int result = 0; switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": result = num1 / num2; break; case "%": result = num1 % num2; break; default: System.out.println("你的输入不合法!!!"); } s.close(); System.out.println(num1 + operator + num2 + "=" + result); } }
方法二
package com.mike.method; import java.util.Scanner; public class Demo07 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("输入一个数:"); //如果输入的不是double类型的数,不会进入循环 while (scanner.hasNextDouble()) { double a = scanner.nextDouble(); System.out.print("输入一个运算符:"); String c = scanner.next(); System.out.print("再输入一个数:"); double b = scanner.nextDouble(); switch(c){ case "+": add(a,b); break; case "-": minus(a,b); break; case "*": multiply(a,b); break; case "/": except(a,b); break; } System.out.println("输入任意字母退出"); } scanner.close(); } public static void add(double num1, double num2) { System.out.println( num1 + num2); } public static void minus(double num1, double num2) { System.out.println( num1 - num2); } public static void multiply(double num1, double num2) { System.out.println( num1 * num2); } public static void except(double num1, double num2) { if(num2==0){ System.out.println("分母不能为0"); }else{ System.out.println( num1 / num2); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?