当前位置: 首页 > news >正文

Day11-Java

Java方法

递归

  • A方法调用B方法,很好理解

  • 递归:A方法调用A方法,自己调用自己

  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转换为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需的多次重复计算,大大减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

  • 递归结构包括两个部分

    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
    • 递归体:什么时候需要调用自身方法
package com.Kong.method;import java.util.Scanner;public class Demo06 {public static void main(String[] args) {System.out.println("请输入你要算的阶乘数:");Scanner sc = new Scanner(System.in);double n = sc.nextDouble();System.out.println(n + "的阶乘为:" + j(n));sc.close();}public static double j(double d) {//递归头if (d == 1) {return 1;}//递归体else {return d * j(d - 1);}}
}
  • 写一个计算机,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现
package com.Kong.method;import java.util.Scanner;public class SimpleCalculator {// 加法public static double add(double a, double b) {return a + b;}// 减法public static double subtract(double a, double b) {return a - b;}// 乘法public static double multiply(double a, double b) {return a * b;}// 除法public static double divide(double a, double b) {if (b == 0) {System.out.println(" 错误:除数不能为0!");return Double.NaN; // 返回非数字表示错误}return a / b;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);boolean isRunning = true;System.out.println("===== 简易计算器 =====");System.out.println("支持运算:+ - * /,输入 'q' 可退出程序");while (isRunning) {System.out.print("\n请输入第一个数字:");if (!scanner.hasNextDouble()) {// 判断用户是否输入了退出指令String input = scanner.next();if (input.equalsIgnoreCase("q")) {System.out.println("程序已退出,再见!");isRunning = false;continue;} else {System.out.println(" 输入无效,请输入数字或 'q' 退出");continue;}}double num1 = scanner.nextDouble();System.out.print("请输入运算符(+ - * /):");String op = scanner.next();System.out.print("请输入第二个数字:");if (!scanner.hasNextDouble()) {String input = scanner.next();if (input.equalsIgnoreCase("q")) {System.out.println("程序已退出,再见!");isRunning = false;continue;} else {System.out.println(" 输入无效,请输入数字或 'q' 退出");continue;}}double num2 = scanner.nextDouble();double result;switch (op) {case "+":result = add(num1, num2);System.out.printf("%.2f + %.2f = %.2f\n", num1, num2, result);break;case "-":result = subtract(num1, num2);System.out.printf("%.2f - %.2f = %.2f\n", num1, num2, result);break;case "*":result = multiply(num1, num2);System.out.printf("%.2f * %.2f = %.2f\n", num1, num2, result);break;case "/":result = divide(num1, num2);if (!Double.isNaN(result)) {System.out.printf("%.2f / %.2f = %.2f\n", num1, num2, result);}break;default:System.out.println(" 无效的运算符,请输入 + - * / 中的一个");break;}}scanner.close();}
}
http://www.jsqmd.com/news/734291/

相关文章:

  • 冒险岛WZ文件终极解析工具:3个步骤快速掌握WzComparerR2完整使用指南
  • 如何永久保存你的微信记忆:WeChatMsg完整指南
  • OpenClaw Mission Control:构建低成本、高可用的多智能体自动化系统
  • 如何在Photoshop中直接使用AI绘画:Comfy-Photoshop-SD插件完全指南
  • 保姆级教程:用TensorFlow 1.15复现CNN+LSTM睡眠分期模型(附Sleep-EDF/MASS数据集处理)
  • 别再乱装了!AutoDock4、Vina1.2.5和PyMOL2.6的黄金组合安装避坑指南(解决闪退/报错)
  • 保姆级教程:在Ubuntu 22.04上搞定JSBSim与AirSim的无人机仿真联调(附常见错误修复)
  • YOLOv8姿态估计实战:除了跌倒,还能用关键点做什么?(附5个创意项目思路)
  • 为OpenClaw智能体工作流配置Taotoken统一API入口
  • 多智能体协作架构搜索与优化技术解析
  • Java集成Dify AI:dify-java-client架构解析与生产实践指南
  • 从野外炮点到最终成像:一条地震道数据在SEG-Y文件里的完整“旅程”与关键字段解读
  • DLSS Swapper:游戏性能优化的智能管家,三步解决DLSS版本管理难题
  • 强化学习在机器人灵巧操作中的挑战与解决方案
  • MoE架构在多语言大模型K-EXAONE中的实践与优化
  • SANA-Video:高效视频生成技术解析与应用
  • 用LightGBM搞定电力负荷预测:从数据清洗到模型调参的完整Python实战
  • Allegro 17.4 约束管理器实战:从单网络到差分对的完整设置流程(附避坑点)
  • Cover65蓝牙双模PCB到手后别急着插轴!这10个新手必看的组装与测试步骤(附防烧板指南)
  • Kylin Cube构建效率翻倍指南:全量 vs 增量,你的业务场景到底该选哪个?
  • GA4063频谱分析仪性能评测与应用指南
  • SwiftUI + AVFoundation实战:5步封装一个可复用的视频播放控制组件
  • 2026成都设计工作室诚信排行榜TOP,成都设计工作推荐严选本地靠谱团队 - 推荐官
  • 企业级知识库构建
  • 如何快速掌握窗口尺寸强制调整:终极免费工具WindowResizer使用指南
  • Sipeed Tang Nano 20K FPGA开发板实战与RISC-V开发指南
  • Windows下TensorFlow GPU版报错cudart64_110.dll找不到?别急着降级,试试这3种更稳妥的解法
  • 从SyncNet到高清Wav2Lip:保姆级配置与训练全流程(含GAN调优指南)
  • AngularJS 事件处理机制详解
  • 用JMeter模拟真实用户行为:手把手教你配置Constant Throughput Timer实现精准TPS控制