递推和递归

递推

何为递推

用若干步可重复运算来描述复杂问题的方法

递推算法是一种用若干步可重复运算来描述复杂问题的方法。递推是序列计算中的一种常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。

经典例题

import java.util.Scanner;

public class Tuzi {
    static Scanner sc=new Scanner(System.in);
    public static void main(String[] args) {
        int[] m =new int[100];
        int n=sc.nextInt();
        //一月和二月都只有一只兔子
        if (n<=2)
        {
            System.out.println("1");
        }else{
            m[1]=m[2]=1;
            //从三月份开始每个月的兔子数为前两个月之和
            for (int i=3; i<=n; i++)
            {
                m[i]=m[i-1]+m[i-2];
            }
            System.out.println(m[n]);
        }
    }
}

 

public class S_num {
    public static void main(String[] args) {
        int[] a=new int[1000];
        int sum=0;
        int n=0;
        for(int i=0; ;i++)
        {
            if(i==0)
            {
            //初始化第一个数
                a[i]=1+n;
                n++;
                sum+=a[i];
            }
            else if(i>=1)
            {
                a[i]=a[i-1]+n;
                n++;
                sum+=a[i];
            }
            if(sum>=5000)
            {
                System.out.println(sum);
                break;
            }
        }
    }
}

递归

何为递归

递归算法应用的场景是要解决的问题和其子问题具有相似性的时候,通过直接或间接的调用自己求出问题解的方法。它是通过解决一个问题的更小实例来解决一个大的问题的解的算法。递归算法有两个过程,一是调用过程,二是向上传递结果的过程。

经典例题

import java.util.Scanner;
public class Test3_digui {
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        int m=sc.nextInt();
        int n=sc.nextInt();
        int sum=0;
        sum = fun(m,n);
        System.out.println(sum);
    }
    public static int fun(int m,int n){
        if(m==0){
            return n+1;
        }
        else if(m!=0&&n==0){
            //先重复执行直到m为0,再逐层返回
            return fun(m-1,1);
        }
        else if(m!=0&&n!=0){
            //先重复执行直到m和n都为0,再逐层返回
            return fun(m-1,fun(m,n-1));
        }else {
            //若输入值错误则返回-1
             return -1;
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java面向对象(上)

一.面向对象与面向过程 1.面向过程 面向过程(procedure Oriented Programming),简称POP,主要思想就是将问题分解成一个个步骤去解决,把这个步骤称为函数. 典型语言:C语言 优点:可以大大简化代码 缺点:当代码量过大时,不方便维护 2.面向对象 面向对象(Object Oriented Pr…

酷开科技丨引领家庭娱乐新潮流,酷开系统带你开启多彩生活新篇章

在繁忙的都市生活节奏中&#xff0c;人们对生活品质的追求从未停歇。家庭娱乐作为提升生活质量的重要部分&#xff0c;随着科技进步和个性化需求的增长&#xff0c;已经发生了翻天覆地的变化。多样化的娱乐方式不仅为家庭生活增添了色彩&#xff0c;也为家庭成员间的相聚带来了…

一站式家装服务管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;装修风格管理&#xff0c;主材管理&#xff0c;用户管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;装修风格&#xff0…

亲测5个电脑浏览器高效技巧,保证让你搜索效率倍增!

虽然我们每个人的电脑基本每天都会用到浏览器&#xff0c;但你会发现有的人用起浏览器就是噼里啪啦的&#xff0c;找他要个什么网站他都能快速找到&#xff0c;而有的人&#xff0c;经常打开的是广告搜索的网页&#xff0c;找不到搜索的答案非常慢。小编今天就来跟你分享一下我…

系统架构设计师 - 数据库系统(1)

数据库系统 数据库系统数据库模式 ★分布式数据库 ★★★数据库设计阶段 ★★ER模型 ★关系模型 ★ ★结构约束条件完整性约束 关系代数 ★ ★ ★ ★概述自然连接 大家好呀&#xff01;我是小笙&#xff0c;本章我主要分享系统架构设计师 - 数据库系统(1)知识&#xff0c;希望内…

Kimichat使用案例023:7个提示词案例(Kimichat炒股)

文章目录 一、了解股票投资基本概念和知识二、寻求投资建议三、如何做长期投资四、找出某只股票的潜在缺点五、多个视角看股票或投资策略沃伦巴菲特视角:彼得林奇视角:埃隆马斯克视角:结论:六、比较两只股票七、总结研报或公司公告、财报等文件一、了解股票投资基本概念和知…

SpringBoot的迭代史,SpringBoot和Spring和Java和Maven和Gradle版本兼容介绍

文章目录 系统环境要求&#xff1a;Spring Boot 3.1.xSpring Boot 3.0.xSpring Boot 2.7.xSpring Boot 2.6.xSpring Boot 2.5.xSpring Boot 2.4.xSpring Boot 2.3.xSpring Boot 2.2.xSpring Boot 2.1.xSpring Boot 2.0.xSpring Boot 1.5.xSpring Boot 1.4.xSpring Boot 1.3.xSp…

深入分析 Android BroadcastReceiver (四)

文章目录 深入分析 Android BroadcastReceiver (四)1. 广播接收器的深入优化与应用1.1 实时性要求高的应用1.1.1 示例&#xff1a;音乐播放器中处理耳机插拔事件1.1.2 动态注册接收器 1.2 处理耗时操作1.2.1 示例&#xff1a;使用 IntentService 处理耗时操作 1.3 安全性管理1.…

1964springboot VUE 智慧社区可视化平台系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE社区可视化平台系统是一套完善的完整信息管理类型系统&#xff0c;结合springboot框架和VUE完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码…

网络安全:SQL注入防范

文章目录 网络安全&#xff1a;SQL注入防范引言防范措施概览使用参数化查询示例代码 输入验证和过滤示例代码 使用ORM框架示例代码 其他防范措施结语 网络安全&#xff1a;SQL注入防范 引言 在上一篇文章中&#xff0c;我们介绍了SQL注入攻击的基础知识。本文将重点讨论如何防…

如何解决虚拟仿真教学中的设备限制和卡顿问题?|点量云流技术解决方案

在数字化时代背景下&#xff0c;高校虚拟仿真教学模型成为重要的教学辅助工具&#xff0c;通常基于UE或U3D引擎开发。尽管当前多数采用Webgl方案&#xff0c;且具备一定优势&#xff0c;但实践中仍存在不少问题。以下是常见问题分析及点量云流实时渲染技术如何提供解决方案的探…

Lynred在欧洲防务展上将展出新品——“HOT”红外传感器Seegnus。

Lynred在即将举办的巴黎欧洲防务展上将展出其令人瞩目的新品——“HOT”红外传感器Seegnus。这款专为战术视觉设计的大型阵列传感器&#xff0c;以其紧凑的封装和高分辨率的中波红外成像能力&#xff0c;无疑将为航空航天、国防和商业市场带来革命性的突破。 Seegnus传感器拥有…

Cookie、Session、Token的关系和区别

关系 Session与Cookie&#xff1a;Session通常依赖于Cookie来工作。当服务器为客户端创建一个Session时&#xff0c;它会在服务器上存储与客户端相关的信息&#xff0c;并将一个唯一的SessionID通过Cookie发送给客户端。客户端在后续的请求中会携带这个Cookie&#xff08;包含…

【面试干货】Java中的访问修饰符与访问级别

【面试干货】Java中的访问修饰符与访问级别 1、public2、protected3、默认&#xff08;没有访问修饰符&#xff09;4、private &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java中&#xff0c;访问修饰符用于控制类、变量、方法和构造器…

基于CST的PCB通孔三维建模实例

CST的Via Wizard流程在其Help文件中的描述如下,流程将经历5个创建模块,最后生成三维模型: 首先,创建一个新的MWS工程文件,在主菜单栏中逐一点击Macros-->Wizard-->Via Wizard,启动创建流程; CST会自动打开基于Excel的创建表格,如下图所示,设计者需要点击“启用宏…

【初阶数据结构】深入解析带头双向循环链表:探索底层逻辑

&#x1f525;引言 本篇将介绍带头双向循环链表底层实现以及在实现中需要注意的事项&#xff0c;帮助各位在使用过程中根据底层实现考虑到效率上问题和使用时可能会导致的错误使用 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔…

加密的记事本app哪个好用 记事本哪款好用能上锁

随着科技的进步&#xff0c;越来越多的人开始倾向于使用记事本app来记录生活中的点点滴滴。相较于传统的纸质记事本&#xff0c;这些app不仅记录内容丰富&#xff0c;而且安全性更高。其中&#xff0c;敬业签就是一款备受好评的记事本软件。 敬业签以其强大的功能和出色的安全…

HTTP详细总结

概念 HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 特点 基于TCP协议: 面向连接&#xff0c;安全 TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议&#xff0c;在…

“Docker入门指南:概念与安装详解“

目录 # 概念 1. Docker常见问题 2. docker概念和安装 2.1 Docker的组成 2.2 Docker 组件及关系表 2.3 docker核心思想 2.4 docker镜像与容器两个核心概念 2.5 容器概念图 2.6 docker核心技术 2.6.1 镜像 (Image) 概述 关系 示例 2.6.2 容器 (Container) 概述 关…

高考志愿填报,如何避免报错专业?

高考志愿填报绝对是关键一环节&#xff0c;分数高低暂且不论&#xff0c;因为这个填报志愿&#xff0c;大概率是决定了余生的职业&#xff0c;也有人说&#xff0c;大学可以转专业&#xff0c;毕业还可以跨行就业&#xff0c;工作了还可以转行.....确实有这个可能性&#xff0c…