首页 > 其他分享 >递归,计算器

递归,计算器

时间:2023-06-26 18:44:13浏览次数:40  
标签:递归 int System static 计算器 println public

递归

递归

  • A方法调用B方法,我们很容易理解!

  • 递归就是:A方法调用A方法!就是自己调用自己

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

  • 递归结构包括两个部分:

    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
    • 递归体:什么时候需要调用自身方法。

    递归头的含义如下:

    1. 递归头是指递归函数中不需要进一步的递归调用就可以直接计算答案的情况。
    2. 递归头的作用是结束递归,防止陷入死循环。
    3. 递归头一般是一个if语句,判断是否满足某个条件。

    递归体的含义如下:

    1. 递归体是指递归函数中需要进一步的递归调用来求解的情况。
    2. 递归体是指递归函数中一个问题的结果与其子问题的结果之间的关系。
    3. 递归体是指递归函数中根据当前函数参数或返回值调用自身的语句。

求f(10)的阶乘

package com.xin.method;

public class Day62606 {
    public static void main(String[] args) {
        System.out.println(f(10));
    }
    //求阶乘  f(3)>>3*f(2)>>3*2*f(1)>>3*2*1
    public static int f(int n){
        if (n==1){
            return 1;
        }else {
            return n*f(n-1);
        }
    }
}

写一个计算器,要求实现加减乘除功能,并且能够循环接受数据,通过用户交互实现。
思路推荐:
写四个方法:加减乘除
利用循环+switch
传递需要操作两个数
输出结果

package com.xin.method;

import java.util.Scanner;

public class Day62607 {
    //写一个计算器,要求实现加减乘除,并且能够接收新的数据,通过用户交互实现
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String nextInput="m";
        while (nextInput.equals("m")) {
            System.out.println("请输入符号与a,b值:");
            String s = scanner.next();
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            double c = 0;
            switch (s) {
                case "+":
                    c = add(a, b);
                    break;
                case "-":
                    c = sub(a, b);
                    break;
                case "*":
                    c = mul(a, b);
                    break;
                case "/":
                    if (b == 0) {
                        System.out.println("除数不能为0");
                    } else {
                        c = div(a, b);
                    }
                    break;
                default:
                    System.out.println("输入错误");
                    break;
            }
            System.out.println(c);
            System.out.println("使用m继续");
            nextInput=scanner.next();
        }
        System.out.println("结束程序");
        scanner.close();
    }
    public static int add(int a,int b){
        return a+b;
    }
    public static int sub(int a,int b){
         return a-b;
    }
    public static int mul(int a,int b){
        return a*b;
    }
    public static double div(double a,double b){
        return a/b;
    }
}

标签:递归,int,System,static,计算器,println,public
From: https://www.cnblogs.com/xin-zhi-suo-xiang/p/17506490.html

相关文章

  • java递归,数组
    递归在Java中,递归是一种方法或函数调用自身的技术。使用递归可以解决那些可以被分解成相同问题的子问题的情况。以下是有关使用递归的一些基本信息:递归的基本原理:找到问题的基本情况(递归终止条件)。找到问题的规模减少的方式,将其转化为更小的子问题。通过调用自身来解......
  • candence计算器函数使用
    (91条消息)【工具小技巧】CadenceVirtuosoCalculatorFunctionPanel计算器函数功能介绍(持续更新……)_cadence计算器函数_喝喝喝水的博客-CSDN博客......
  • 代码随想录算法训练营第十五天| 110.平衡二叉树 (优先掌握递归) 257. 二叉树的所有路径
     110.平衡二叉树(优先掌握递归)难点:要求每个节点的左右字数的高度相减<=1,因此,需要对每个节点都进行检查,难就难在怎么获得任意节点的高度其中递归是最简单的: 1intisB_cursor(TreeNode*node,bool&isBalance)2{3if(isBalance==false)return0;4if......
  • Python 设计一个简单的计算器
    Python设计一个简单的计算器设计目标实现加减乘除及拓号优先级解析用户输入1-2*((6-3+(-5/5)*(9-2*3/3+7/3*7/4*12+10*5/5))-(-4*3)/(12-3*2))等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致......
  • Android入门--写一个最简单的计算器
    这里将写的计算器是借用了下面写的计算器,并把其中需要注意的地方一一补充罗列:http://www.iteye.com/topic/141029需要演示的结果:之前假设已经配置好Android开发环境,如果没有,请参看下面2篇文章:Win7配置Android开发环境ubuntu10.10下安装android2.2开发环境 第一步,新......
  • Android-Kotlin-递归与尾递归
    递归:阶乘计算:/***阶乘:*1的阶乘是1,因为1往下走一个楼梯就是0了*2的阶乘是2*1*3的继承是3*2*1*4的继承是4*3*2*1*5的阶乘是5*4*2*1*/packagecn.kotlin.kotlin_base06......
  • 二分查找法upper版(找大于某个值的最小下标)递归+非递归版
    需求:比如说查询一个班级大于60分的最低分等等。思路与二分法基本相同,只不过是对比的逻辑发生了一些小变化,这里所说的上界就是指大于某个值的最小下标。当mid<target:说明target的上界还在mid的右边,所以要去找比mid大的当mid>target:说明mid有可能是target的上界,所以......
  • 代码随想录算法训练营第十四天| 104.二叉树的最大深度 (优先掌握递归) 111.二叉树的最小
    104.二叉树的最大深度(优先掌握递归)迭代法,上一篇已经讲过,只需要对每一层+1,这里重要些递归法递归法注意:如果当前节点为NULL,返回0,不是NULL,那么就是1+max(right,left)代码:1voidmaxD_cursor(TreeNode*node,int&result)2{3if(!node)return;45result......
  • 时间序列转图像:符号递归图(Symbolic recurrence plots)(matlab版复现)
    符号递归图(Symbolicrecurrenceplots):是一种以为时间序列转图像技术,可用于平稳和非平稳数据集;对噪声具有鲁棒性,在一定的数据变换条件下具有不变性。结合深度学习技术可以解决能源电力,水利,天气,生物医学,交通等领域的复杂模式识别和监测任务。链接:https://mbd.pub/o/bread/mbd-ZJqY......
  • 代码随想录算法训练营第十三天| 层序遍历 226.翻转二叉树 (优先掌握递归) 101. 对
    层序遍历注意:1,使用队列的形式,依次入队,同时对队列进行计数2,知道数目消失,才进行下一个队列代码:1vector<vector<int>>levelOrder(TreeNode*root)2{3vector<vector<int>>result;4if(root==NULL)returnresult;5queue<TreeNode*>selected;6......