前置知识:方法递归

embedded/2024/9/23 11:16:24/

什么是方法递归?

*递归是一种算法,在程序设计语言中广泛应用。
从形式上说:方法调用自身的形式称为方法递归(recursion)。


递归的形式


*直接递归:方法自己调用自己。
*间接递归:方法调用其他方法,其他方法又回调方法自己。

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


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

递归算法三要素: 


递归的公式:f(1)=f(n-1)*n; 
递归的终结点:f(1) 
递归的方向必须走向终结点: 
f(5)=f(4)*5                 
f(4)=f(3)*4                 
f(3)=f(2)*3 
f(2)=f(1)*2 
f(1)=1

public class DiGuiAnLi {public static void main(String[] args) {//计算n的阶乘System.out.println(jiecheng(4));}public static int jiecheng(int n){if (n == 1) {return 1;}else{return jiecheng(n-1)*n;}}
}
public class DiGuiQIUHE {//求1-n的和public static void main(String[] args) {System.out.println(sum(3));}public static int sum(int n){if (n==1){return 1;}else{return n+sum(n-1);}}
}

案例猴子吃桃问题


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

public class DiGuiTaoZi {public static void main(String[] args) {/*** 案例猴子吃桃问题* ·猴子第一天摘下若干桃子,当即吃了一半,觉得好不过瘾,于是又多吃了一个第二天又吃了前天剩余桃子数量的半,觉得好不过瘾,* 于是又多吃了一个,以后每天都是吃前天剩余桃子数量的一半,觉得好不过瘾,又多吃了一个等到第10天的时候发现桃子只有1个了。* 需求:请问猴子第-天摘了多少个桃子?* f(10)=1* f(9)=(f(10)+1)*2*f(n-1)=(f(n)+1)*2* f(1)=(f(2)+1)*2* ...* f(8)=(f(9)+1)*2* f(9)=(f(10)+1)*2* f(10)=1*/System.out.println(tiaozi(1));}public static int  tiaozi(int n) {if (n==10){return 1;}else{return (tiaozi(n+1)+1)*2;}}
}


http://www.ppmy.cn/embedded/29953.html

相关文章

微服务入门学习笔记(黑马商城)

课程转跳:SpringCloud微服务Day1-01.微服务课程介绍_哔哩哔哩_bilibili 一、服务拆分 新建一个maven项目将商品服务拆分出去 更改包扫描 新建一个数据库用于商品服务,同样将表拆分出去 更改配置文件的服务名和数据库名 启动多个实例: 复制配…

Go图片列表

需求 在一个页面浏览目录下所有图片 代码 package mainimport ("net/http""fmt""io/ioutil""sort""strings""strconv" )func handleRequest(w http.ResponseWriter, r *http.Request) {fmt.Println(r.Proto &…

记录用php制作上传本地图片并获取图片地址/本地图床的方法

要实现一个允许用户上传本地图片并获取图片地址的功能,你需要使用HTML来创建文件上传表单,使用PHP来处理上传的文件,以及可能需要JavaScript来增强用户体验(比如预览图片)。以下是一个简单的示例,展示如何使用这些技术实现图片上传功能。 HTML部分 创建一个表单,让用户…

GitHub Copilot 简单使用

因为公司安全原因,并不允许在工作中使用GitHub Copilot,所以,一直没怎么使用。最近因为有一些其它任务,所以,试用了一下,感觉还是很不错的。(主要是C和Python编程) 一:常…

Maximo 使用 REST API 调用 Automation Scripts

创建Automation Scripts 首先在 Maximo 的 Automation Scripts 应用中创建一个自动化脚本,内容如下: Script: countofwoandsr Script Language: javascript Allow Invoking Script Functions: true load("nashorn:mozilla_compat.js"); imp…

计算机毕业设计PHP+vue体检预约管理系统d1yu38

防止在使用不同数据库时,由于底层数据库技术不同造成接口程序紊乱的问题。通过本次系统设计可以提高自己的编程能力,强化对所学知识的理解和运用 本系统是一个服务于医院先关内容的网站,在用户打开网站的第一眼就要明白网站开发的目的&#x…

Redis 实现分布式Session 登录相关细节

Redis 实现分布式Session 登录 借助 Redis 对 Session 信息进行统一的存储和管理,这样无论请求发送到哪台服务器,服务器都会去同一个 Redis 获取相关的 Session 信息,这样就解决了分布式系统下 Session 存储的问题。 【发送短信】校验手机号…

EMP.DLL是什么东西?游戏提示EMP.DLL文件缺失怎么解决

emp.dll文件是Windows操作系统中的一种动态链接库文件,它被设计为可以被多个程序共享使用的模块化文件。这种设计旨在提高系统效率,减少内存消耗,并简化软件的维护和更新。DLL文件通常包含了一系列相关的函数和变量,这些函数和变量…