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

方法递归-结合案例阶乘问题、求和问题和猴子吃桃问题

方法递归

递归是一种算法 在程序设计语言中广泛应用.

从形式上来说:方法调用自身的形式称为方法递归(recursion).

递归的形式:

  • 直接递归:方法调用自己。
  • 间接递归:方法调用其他方法,其他方法又回调方法自己。
//直接方法递归
public static void test1(){System.out.println("----test1----");test1();
}
//间接方法递归
public static void test2(){System.out.println("----test2----");test3();
}
public static void test3(){test2();
}

使用方法递归时需要注意的问题:

递归如果没有控制好终止,会出现递归死循环,导致栈内存溢出错误。

递归案例(一)-计算机n的阶乘

需求:计算n的阶乘,5的阶乘=1x2x3x4x5;6的阶乘=1x2x3x4x5x6;

分析:

①假如:我们存在一个公式是f(n)=1x2x3x4x5x6x7…(n-1)*n;

②那么公式等价于f(n)=f(n-1)*n;

③如果求的是1-5的阶乘的结果,我们手工应该如何应用上述公式进行计算

f(5)=f(4)x5;

f(4)=f(3)x4;

f(3)=f(2)x3;

f(2)=f(1)x2

f(1)=1;

public static int f(int n){if(n==1){return 1;}else{return n*f(n-1);}
}

递归算法三要素:

  1. 递归的公式;
  2. 递归的终结点;
  3. 递归的方向必须走向总结点。

递归案例(二)-求1-n的和

需求:计算n的阶乘,1-5的和=1+2+3+4+5;1-6的和=1+2+3+4+5+6;

分析:

①假如:我们存在一个公式是f(n)=1+2+3+4+5+6+7…(n-1)+n;

②那么公式等价于f(n)=f(n-1)+n;

③如果求的是1-5的和的结果,我们手工应该如何应用上述公式进行计算

f(5)=f(4)+5;

f(4)=f(3)+4;

f(3)=f(2)+3;

f(2)=f(1)+2

f(1)=1;

public static int f(int n){if (n==1){return 1;}return n+f(n-1);
}

递归案例(三)-猴子吃桃问题

问题描述:猴子第一天摘下若干桃子,当即吃了一半,觉得好不过瘾,于是又多吃了一个,第二天又吃了前天剩余桃子数量的一半,觉得好不过瘾,于是又多吃了一个以后每天都是吃前天剩余桃子数量的一半,觉得好不过瘾,又多吃了一个等到第10天的时候发现桃子只有1个了。
需求:请问猴子第一天摘了多少个桃子?

分析:

①f(10)=1
②公式f(x)-f(x)/2-1=f(x+1)
③变形:f(x)/2-1=f(x+1)
④变形2:f(x)=2*f(x+1)+2

public static int f(int n){if(n==10){return 1;}else{return 2*f(n+1)+2;}
}

相关文章:

方法递归-结合案例阶乘问题、求和问题和猴子吃桃问题

方法递归 递归是一种算法 在程序设计语言中广泛应用. 从形式上来说:方法调用自身的形式称为方法递归(recursion). 递归的形式: 直接递归:方法调用自己。间接递归:方法调用其他方法,其他方法…...

有一个主域名跟多个二级子域名时该怎么申请SSL证书?

当您拥有主域名以及多个子域名时,选择合适的SSL证书类型对于确保网站的安全性至关重要。以下是三种SSL证书类型的简要介绍: 单域名SSL证书: 功能:只能绑定单个域名,无论是主域名还是子域名。 适用场景:仅…...

LabVIEW伺服电机可应用在哪些领域

LabVIEW与伺服电机的结合,得益于LabVIEW强大的图形编程能力和伺服电机的高精度、高响应速度,广泛应用于多个领域。以下是一些主要应用领域: 1. 工业自动化 数控机床控制 LabVIEW用于控制伺服电机在数控机床中的运动,实现高精度的…...

nvidia 显卡 没有正确安装或配置 OpenGL 库

看到这个错误可能意味着你的系统没有正确安装或配置 OpenGL 库。以下是一些步骤来解决这个问题: 1. 安装必要的软件包 确保你已经安装了必要的软件包,包括 mesa-utils 和 nvidia-driver。 安装 mesa-utils sudo apt update sudo apt install mesa-ut…...

将自己md文件发布到自己的博客园实现文件的持久化存储

上传markdown文件到博客园 目录 【0】需求原因【1】功能【2】环境【最佳实践测试】 (1)查看 Typora 设置(2)配置 pycnblog 配置文件 config.yaml(3)运行 pycnblog 中的文件 cnblog_markdown.cmd&#xff0…...

uni-app的生命周期(应用,页面生命周期)

1. uni-app的生命周期(应用,页面生命周期) 1.1. 应用生命周期 1.1.1. 定义在app.vue中 生命周期函数名说明onLaunch当uni-app 初始化完成时触发(全局只触发一次)onShow当 uni-app 启动,或从后台进入前台…...

响应式企业网站建站系统源码 模版丰富+一站式建站 全开源可二次开发 带源码包+搭建部署教程

系统概述 在数字化转型的浪潮中,企业官网作为品牌展示、产品推广及客户服务的重要窗口,其建设质量直接影响着企业的线上形象与市场竞争力。响应式企业网站建站系统源码的出现,为企业提供了一种高效、灵活且成本可控的建站解决方案。 代码示…...

如何解除内存卡的写保护并格式化为exFAT文件系统

最近有客户提问内存卡提示写保护,且无法格式化为exFAT格式的问题,可能是由于多种原因引起的。以下是一些可能的解决方法: 1. 检查物理写保护开关 一些SD卡和MicroSD卡适配器上有一个小的物理开关,可以启用或禁用写保护。确保这个…...

【 EI会议 | 西南大学主办 | 往届均已实现检索】第三届神经形态计算国际会议(ICNC 2024)

第三届神经形态计算国际会议(ICNC 2024) 2024 3rd International Conference on Neuromorphic Computing (ICNC 2024) 一、重要信息 大会官网:www.ic-nc.org(点击投稿/参会/了解会议详情) 会议时间:2024年12月13-15…...

利用python爬虫采集苹果公司各产品销售收入统计报告

数据为2013年到2022年苹果公司各产品(iPhone、iPad、Mac等)及服务的销售收入。iPhone是苹果公司销售收入最高的产品。 数据统计单位为:亿美元 。 数据说明: 数据整理自苹果公司历年10-K文件,每年10-K文件可能对之前年…...

ethercat igh可能出现的两个bug

1. 插入网线直接就进入op状态,这可能是因为 从站支持eoe协议 igh对eoe协议支持的从站默认使其直接进入op状态,可以修改igh源码编译选项,不启动eoe协议 可以参考: igh编译选项 igh一些EoE协议说明 Automatic Configuration&#…...

计算机网络知识点(三)

目录 一、简述TCP连接和关闭的状态转移 二、简述TCP慢启动 三、简述TCP如何保证有序 四、简述TCP常见的拥塞控制算法 五、简述TCP超时重传 一、简述TCP连接和关闭的状态转移 状态转移图 图中上半部分是TCP的三次握手过程的状态变迁,下半部分是TCP四次挥手过程的…...

关于认证协议

本地用户认证 本地认证的意思就是,我们的电脑上存储着自己的账号密码,无论电脑是否联网,只要能开机,就可以输入账号密码登录到电脑中,工作组就是采用本地认证 本地认证流程 winlogon.exe -> 接收用户输入 -> …...

C#操作MySQL从入门到精通(20)——更新数据

前言: 谈到数据库,大家最容易脱口而出的就是增删改查,本文所说的更新数据就是增删改查的改,改变数据的意思。 本文测试使用的数据库如下: 1、更新一列 所谓更新一列的意思就是只更改一列数据,并且通常要使用where条件,因为不加这个条件的话会导致将所有行的数据进行…...

NVMe全闪存储系统性能测试及产品功能与应用场景

今天我们继续对全闪存储系统GS 5024UE的评测,重点关注GS 5024UE的性能测试数据,以及产品所具备的功能、应用场景。通过Windows IOmeter测试软件,来测试GS 5024UE设备的性能,在机器上配上24颗 NVMe 3.84TB硬盘, 16条32Gb FC数据&am…...

C#面:C#面向对象的思想主要包括什么?

C#面向对象的思想主要包括以下几个方面: 封装(Encapsulation):封装是将数据和操作数据的方法封装在一起,形成一个类。通过封装,可以隐藏类的内部实现细节,只暴露必要的接口给外部使用。这样可以…...

海南云亿商务咨询有限公司正规吗?怎么样?

在当下数字化浪潮汹涌的时代,抖音电商作为新兴的营销渠道,正以其独特的魅力和巨大的市场潜力,吸引着越来越多的企业和品牌投身其中。作为专注抖音电商服务的佼佼者,海南云亿商务咨询有限公司凭借专业的团队、丰富的经验和前瞻的战…...

【数据结构】排序(上)

个人主页~ 堆排序看这篇~ 还有这篇~ 排序 一、排序的概念及应用1、概念2、常见的排序算法 二、常见排序的实现1、直接插入排序(1)基本思想(2)代码实现(3)时间复杂度(4)空间复杂度 2…...

vue3+el-plus对eleplus对el-table表格进行拖拽(使用sortablejs进行列拖拽和行拖拽):

如有对表格拖拽进行限制某列或某行不进行拖拽的需求,请点击: vue3ele-plussortableJs对el-table使用sortableJs插件对表格拖拽时限定某列或某行不允许拖拽-CSDN博客 如果你已实现拖拽需求,但拖拽后发现表头并未改变的话,请点击&…...

Nginx如何隐藏版本号

1 找到nginx.conf配置文件进行修改 http{...server{listen 80 default_server;listen [::]:80 default_server;server_name _;root /usr/share/nginx/html;server_tokens off; #添加这一项就可以了location / {}error_page 404 /404.html;location /40…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

数据链路层的主要功能是什么

数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...