算法 数据结构 什么是递归 递归解决阶乘 阶乘递归代码 递归解决问题 递归反向打印字符串 数据结构(七)

news2024/11/28 1:36:44

递 归:

            计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集

In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem.

  • 深入到最里层叫做

  • 从最里层出来叫做

  • 的过程中,外层函数内的局部变量(以及方法参数)并未消失,的时候还可以用到

阶乘:

package com.nami.algorithm.study.day06;

/**
 * beyond u self and trust u self.
 *
 * @Author: lbc
 * @Date: 2023-09-05 8:59
 * @email: 594599620@qq.com
 * @Description: keep coding
 */
public class Factorial {

    /**
     * 阶乘递归
     * 
     * @param n
     * @return
     */
    private static int f(int n) {
        // 缩减至无须递归
        // 内层函数调用(子集处理)完成,外层函数才能算调用完成
        if (n == 1) {
            return 1;
        }
        //每次调用,函数处理的数据会较上次缩减(子集),而且最后会缩减至无需继续递归
        return n * f(n - 1);
    }

    public static void main(String[] args) {
        System.out.println(f(5));
    }

}

递归 反向打印字符串:

package com.nami.algorithm.study.day06;

/**
 * beyond u self and trust u self.
 *
 * @Author: lbc
 * @Date: 2023-09-05 9:27
 * @email: 594599620@qq.com
 * @Description: keep coding
 */
public class ReversePrintString {

    /**
     * 降序
     * @param word
     * @param n
     */
    private static void print(String word, int n) {
        if (0 == n) {
            return;
        }
        System.out.println(word.charAt(n-1));
        print(word, n-1);
    }

    /**
     * 升序
     * @param word
     * @param n
     */
    private static void print0(String word, int n) {
        if (n == word.length()) {
            return;
        }
        print0(word, n+1);
        // 逆序放在递归后面
        System.out.println(word.charAt(n));
    }

    public static void main(String[] args) {
        String word = "abcdef";
//        print(word, 6);
        print0(word, 0);
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/976207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营之JAVA|第四十三天|139. 单词拆分

今天是第 天刷leetcode,立个flag,打卡60天。 算法挑战链接 139. 单词拆分https://leetcode.cn/problems/word-break/ 第一想法 看完之后完全没有想法。 看完代码随想录之后的想法 这是一个完全背包的问题,使用完全背包的解法。 单词就…

pinia和vuex的使用以及区别

还是要记笔记多看才行,要不然老是会忘记 它没有mutation,他只有state,getters,action【同步、异步】使用他来修改state数据pinia没有modules配置,每一个独立的仓库都是definStore生成出来的state是一个对象返回一个对象和组件的da…

面试被问到:测试计划和测试方案有什么区别?你会回答吗~

面试的时候,很多小伙伴都被面试官问过这个问题 “测试计划和测试方案有什么区别”? 到底有什么区别呢?我们先好好了解下这两个文档。 一、测试计划 1、测试计划是什么 测试计划是组织管理层面的文件,从组织管理的角度对一次测…

接口自动化测试如何处理 Header cookie

Cookie(复数形态:Cookies)是某些网站为了辨别用户身份而储存在用户本地终端上的数据。在接口测试过程中,如果网站采取了 Cookie 认证的方式,那么发送的请求需要附带 Cookie,才会得到正常的响应的结果。接口…

牛客周赛 Round 10

A.游游的最长稳定子数组 原题链接 : 登录—专业IT笔试面试备考平台_牛客网 思路 : 一个线性dp,dp[i]表示以a[i]结尾的最长稳定子数组的长度; dp方程 : if(abs(a[i]-a[i-1]) < 1) dp[i]dp[i-1]1; else dp[i] 1; 代码 : #include<bits/stdc.h> #def…

Java低代码开发:jvs-list(列表引擎)功能(一)配置说明

在低代码开发平台中&#xff0c;列表页是一个用于显示数据列表的页面。它通常用于展示数据库中的多条记录&#xff0c;并提供搜索、排序和筛选等功能&#xff0c;以方便用户对数据进行查找和浏览。 jvs-list是jvs快速开发平台的列表页的配置引擎&#xff0c;它和普通的crud 具…

【招标投标API】有人靠它赚数百万,绝大多数企业却熟视无睹!

引言 在当前优胜劣汰的市场&#xff0c;中小企业的竞争压力日益增大&#xff0c;一些与时代发展逆向而行的企业也将被淘汰。众所周知&#xff0c;传统的招投标行业信息存在各自分裂、数据局限的问题&#xff0c;所以招投标行业发展滞后&#xff0c;给各招投标企业造成了巨大的…

利用MQ实现mysql与elasticsearch数据同步

流程 1.声明exchange、queue、RoutingKey 2. 在hotel-admin中进行增删改&#xff08;SQL&#xff09;&#xff0c;完成消息发送 3. 在hotel-demo中完成消息监听&#xff0c;并更新elasticsearch数据 4. 测试同步 1.引入依赖 <!--amqp--> <dependency><groupId&…

RHCA之路---EX280(10)

RHCA之路—EX280(10) 1. 题目 On master.lab.example.com install the OpenShift Mertics component with the following requirements: Use the storage /exports/metrics for cassandra storage. You can use the files on http://materials.example.com/exam280/storage fo…

js recude求和

let unReadCount resultList.reduce((pre, cur) > {return pre cur.unReadCount}, 0)

电脑Windows关闭系统自动更新

1.在winr运行框中输入services.msc&#xff0c;打开windows服务窗口。 2.在服务窗口中&#xff0c;我们找到Windows update选项&#xff0c;如下图所示&#xff1a; 3.双击windows update服务&#xff0c;我们把启动类型改为禁用&#xff0c;如下图所示&#xff0c;点击应用和…

Windows共享文件夹

Windows共享文件夹 将服务器相应磁盘设置为共享式本机可远程访问服务器共享到本地注意 将服务器相应磁盘设置为共享式 这里E已经是共享式 将D也设置为共享式 \\Desktop-erps210\d本机可远程访问服务器 将本机和服务器的ip设置一个网段&#xff0c;然后网线直连 需要关闭服务器…

AUTOSAR Davinci Idle task 与 Init Task的配置

最近在用Davinci配置Idle task和Init Task的时候遇到了一些问题&#xff0c;配置OS的时候&#xff0c;软件会自动为每个Application生成一个Idle task和Init Task&#xff1a; 先来看Idle Task&#xff0c;自动生成的Idle task的优先级是0xFFFFFFFF&#xff0c;官方给出的解释…

Library ‘libs‘ required for module ‘xxx‘ is missing from the artifact

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 错误概述 项目报错&#xff1a;Library ‘libs’ required for module ‘xxx’ is missing from the artifact&#xff1b;图示如下&#xff1a; 解决方案 点击减号删除当…

Stack-queue

文章目录 stack适配器关于为什么不直接在成员函数里调用push_back... stack 适配器 stack和queue使用了container适配器&#xff0c;因为它觉得我不需要自己实现一个容器来实现而直接用现成的 stack和queue并没有迭代器&#xff0c;因为本来就是后进先出&#xff0c;先进先出&…

无涯教程-JavaScript - DATE函数

描述 DATE函数返回特定日期的序列号。 语法 DATE (year, month, day)争论 Argument描述Required/Optionalyear year参数的值可以包含1-4位数字。 Excel会根据计算机使用的日期系统解释年份参数。 默认情况下,Microsoft Excel for Windows使用1900日期系统。 请参阅下面的注…

9.4 数据库 TCP

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//判断数据库对象是否包含了自己使用的数据库if(!db.contains("Stu.db")){//不存在数据库&#xff0…

对可再生能源和微电网集成研究的新控制技术和保护算法进行基线和测试及静态、时域和频率分析研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

vue2 封装通用表格数据筛选的重置摁钮

放弃冗余代码吧&#xff0c;封装个混入 封装逻辑 // 重置表格筛选参数 export const queryReset {methods: {queryReset(form, method "getData", fn) {if (!this[form]) {form "queryForm";}this.$data[form] this.$options.data()[form];this[form…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书对外经济贸易大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书对外经济贸易大学图书馆