递归---算法

1、概念

        在数学与计算机科学中,是指在方法的定义中使用方法自身。递归算法是一种直接或者间接调用自身方法的算法,即在定义自身的同时又出现自身的直接或间接调用。

特点:

  1. 递归就是方法里调用自身。
  2. 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
  3. 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
  4. 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。

注意:递归必须要有一个退出条件

//n的阶乘    public void digui(int n){if(n == 1){return 1;}return n*digui(n-1);}递归方法名(参数){if(判断是否到达出口){return;//结束递归}调用自身(参数);//递归逻辑return;
}

总结:

  1. 找到一种划分的方法
  2. 找到递推公式或者等价转换,这些都是父问题转化为求解子问题
  3. 找变化的量:变化的通常要作为参数找出口

例题---斐波那契数列

        斐波那契数列的定义为F(n)=F(n-1)+F(n-2),同时F1=1,F2=1。请你输出数列的第n个数的对1e9+7取模的值。

    public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();System.out.println(f(n));}public static long f(int n){if(n == 1 || n == 2){return 1;}long res = f(n-1) + f(n-2);res %= (long)1e9+7;return res;}

例题---数的计算

        输入一个自然数n(n<=1000),我们对此自然数按照如下方法进行处理:

  1. 不做任何处理;
  2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
  3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止。

输入描述:输入一个正整数n

输出描述:输出一个整数,表示答案。

示例:6

           6

import java.util.Scanner;public class Main {static int ans = 1;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();f(n);System.out.println(ans);}public static void f(int n){if(n == 1){return;}for (int i = 1; i <= n/2; i++) {f(i);ans++;}}
}

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

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

相关文章

站群CMS系统

站群CMS系统是一种用于批量建立和管理网站的内容管理系统&#xff0c;它能够帮助用户快速创建大量的网站&#xff0c;并实现对这些网站的集中管理。以下是三个在使用广泛的站群CMS系统&#xff0c;它们各具特色&#xff0c;可以满足不同用户的需求。 1. Z-BlogPHP Z-BlogPHP是…

c# 内存碎片化

内存碎片化是一个性能问题&#xff0c;它出现在动态内存分配调用&#xff08;如C#中的new操作符&#xff09;过程中。紧凑的内存块在被频繁分配和释放后&#xff0c;可能导致剩余的空闲内存块被分散在一整块内存中&#xff0c;这就是碎片化。这种情况下&#xff0c;你可能有足够…

4年经验来面试20K的测试岗,一问三不知,我还真不如去招应届生。

公司前段缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试…

vue使用i18n

&#x1f388;个人主页&#xff1a;靓仔很忙i &#x1f4bb;B 站主页&#xff1a;&#x1f449;B站&#x1f448; &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;前端 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#x…

【LeetCode热题100】【普通数组】轮转数组

题目链接&#xff1a;189. 轮转数组 - 力扣&#xff08;LeetCode&#xff09; 用额外数组的话&#xff0c;时间和空间复杂度都是O(n) 不用二维数组直接循环移动kn次暴力会超时&#xff0c;时间复杂度达到了O(kn) 考虑轮转的结果&#xff0c;向右移动k个位置的结果相对于整体…

Mysql实用SQL例子

查询一天内登陆两次以上的用户 分析&#xff1a; 数据存储结构为&#xff1a;用户信息表 和 登陆记录表。 登陆记录表一般会有用户ID&#xff0c;登陆时间这两个核心字段。先从登陆信息表中找到一天内登陆两次以上的用户&#xff08;id&#xff09;关联用户信息表得到用户信息…

力扣热题100_链表_141_环形链表

文章目录 题目链接解题思路解题代码 题目链接 141. 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

2024年网络安全运营体系建设方案

以下是部分WORD内容&#xff0c;请您参阅。如需下载完整WORD文件&#xff0c;请前往星球获取&#xff1a; 网络安全运营监控工作整体构想 工作目标及原则 工作目标 为进一步落实强化公司网络安全保障&#xff0c;有效支撑公司数字化转型战略&#xff0c;建立健全公司网省两级协…

HCIP(DSVPN)实验

HCIP&#xff08;DSVPN&#xff09;实验 一&#xff0c;实验要求&#xff1a; 1、r5为isp&#xff0c;只能进行ip地址的配置&#xff0c;其所有ip地址均为共有ip地址 2、r1和r5使用ppp的PAP认证&#xff0c;r5为主认证方 r2和r5之间使用ppp的chap认证&#xff0c;r5为主认证方…

imu测试--UDP、PTP

imu测试–UDP、PTP UDP 服务器端口&#xff1a; nc -lu -p 52340;客服端&#xff1a; nc -u 192.168.101.175 52340列出linux所以的开放端口 sudo netstat -tulpn或者$ sudo ss -tulpn状态列显示端口是否处于侦听状态(LISTEN)。 在上面的命令中&#xff0c;标志&#xff…

数学公式——蓝桥杯赛题

题目信息 解题代码 def isintersect(k1, b1, k2, b2):# 如果两条直线的斜率不相等&#xff0c;则它们必定相交if k1 ! k2:return Trueelse:return False# 定义一个函数getpoint&#xff0c;用于计算两条直线交点的坐标 def getpoint(k1, b1, k2, b2):# 使用直线交点公式计算交…

快速安装sudachipy日语包

1、前往 https://rustup.rs 下载并安装 Rustup Linux系统可直接运行以下命令 Window系统需要去网站下载exe包 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh2、安装 Rust 编译器 rustup install stable3、设置默认版本 rustup default stable4、重新安装 …

电机的工作电流怎么计算?

电机的工作电流计算通常需要考虑多个因素&#xff0c;包括电机的额定功率、工作电压、效率以及负载情况等。以下是一个基本的计算方法&#xff0c;用于估算直流电机或交流电机在特定条件下的工作电流。 了解电机参数 额定功率 (P_rated) 电机的额定功率是指在额定工作条件下&am…

基于Websocket的局域网聊天系统

1.1 研究背景及意义 本项目所对应领域的研究背景及意义[1]。新冠肺炎局域网通信发生以来&#xff0c;大数据、云计算、人工智能等新一代信息技术加速与交通、局域网通信、教育、金融等领域深度融合&#xff0c;让局域网通信防控的组织和执行更加高效&#xff0c;成为战“疫”的…

Spring源码基础解析

这里写目录标题 Spring从哪开始&#xff1f;Spring的基本运行BeanFactoryPostProcessor与BeanPostProcessor的区别BeanFactoryPostProcessor用来处理bean的定义信息BeanDefinitionBeanPostProcessor用来处理Bean对象&#xff08;包含实例化与初始化&#xff09; Environment Sp…

jQuery基础知识:入门、应用与未来发展

随着互联网技术的不断发展&#xff0c;前端开发技术也日新月异。在众多前端框架和库中&#xff0c;jQuery凭借其简洁、易用的特性&#xff0c;一直受到广大开发者的青睐。本文将带您走进jQuery的世界&#xff0c;从基础知识讲起&#xff0c;探讨其应用场景&#xff0c;并展望其…

Mac下Docker Desktop starting的解决方法

记录下自己在新增了一个新的容器后&#xff0c;Disk Size过大导致启动Docker Desktop会一直卡在Docker Desktop starting&#xff0c;并且重启无效的解决方法。该方法无需重新卸载&#xff0c;并且能保留原有的镜像和容器。 一、确认问题 首先确认Docker.raw大小以确认是否和笔…

算法3:查找算法

查找算法 常用查找算法 1,顺序(线性)查找 2,二分查找/折半查找 3,插值查找 4,斐波那契查找 线性查找 线性查找,通过遍历和逐一比对,在发现相同值时返回下标 代码如下 public int Seqsearch(int t, int[] arr) {for (int i 0; i < arr.length; i) {if (t arr[i]) …

前端开发学习笔记 1 (基础概念、HTML5基础、前端开发工具VSCode基本介绍)

文章目录 基础概念篇网页相关的基础概念浏览器和浏览器内核Web标准 HTML5基础HTML的基本语法规范HTML文件基本结构标签文档类型声明标签、文件语言和字符集类型标题标签、段落标签和换行标签文本格式化标签两种容器标签图像标签超链接相关HTML中的注释和特殊字符表格标签列表标…

manacher算法

回文串的性质 回文串类似于ABA&#xff0c;ABCBA,AABBAA等的对于i具有s[i]s[n!-i]的字符串。 回文半径&#xff1a;对于一个回文中心i&#xff0c;如果它的半径为r&#xff0c;如果它为奇数长度的回文串的中心&#xff0c;则说明[ir1,ir-1]为一个回文串。如果i是偶数长度的回…