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

Java递归练习----猴子偷桃

问题: 

有一堆桃子,猴子第一天吃灵其中的一般,并在多吃了一个!以后每天猴子都吃其中的一半,然后多吃一个。当到第十天时,想再吃时(即还没吃),发现只有1个桃子了,问最初多少个桃子?

递归的内存执行机制: 

此图片和问题无关,就是一个例子,大家可以根据我的标注一点点看,如果看不懂的话,可以看一下:传送门

上述图片来源于韩顺平老师讲Java课的图片 

递归可以理解为一直自己调用自己,根据栈空间,每次调用方法都会创建一个新的数据空间,一直到条件不允许执行,结果递归,一层层回去。每次的返回证明这段栈空间的代码全部执行完毕,此方法也就从栈空间出去了,比如上述标4,5,6的地方!

递归需要注意一定要找到出口,换句话说就是结束递归的条件。不然就成“死龟了”。 

代码: 

class Tool
{
	int res = 0;
	public int rec(int d)
	{
		if(d == 10)
		{
			return 1;
		}
		res = (rec(d+1) + 1 ) * 2;
		return res;
	}	
}

public class test6
{
	public static void main(String[] args)
	{
		int d = 1;
		Tool t = new Tool();
		int res = t.rec(d);
		System.out.println(res);
	}		
}

规律: 

当前的桃子 = (后一天的桃子 + 1) * 2

 欢迎喜欢的小伙伴关注哦,上述规律大家可以自己推一下,这里需要逆向思维一下,如果有错误欢迎留言!

 

http://www.dtcms.com/a/129140.html

相关文章:

  • 基于ueditor编辑器的功能开发之增加自定义一键排版功能
  • Java IO 流
  • 【资料分享】瑞芯微RK3576,8核2.2GHz+6T算力NPU工业核心板说明书
  • STM32(基于标准库)
  • 多模态大模型[CLIP/Flamingo/Coca/BLIP]
  • Unity入门
  • 图谱可视化的海洋生物信息查询网站的设计与实现(springboot+ssm+vue)含文档
  • 十八、TCP多线程、多进程并发服务器
  • 气动V型调节开关球阀气源连接尺寸与方式全解析-耀圣
  • 2025 GGS全球游戏峰会前瞻预告:全新版本控制平台Perforce P4、龙智游戏开发及管理解决方案等即将亮相
  • 【家政平台开发(37)】家政平台蜕变记:性能优化与代码重构揭秘
  • Dify添加ollama插件
  • OpenHarmony5.0.2 音频audio适配
  • js中this的指向问题
  • 智能测试用例生成:老旧平台页面查询功能的大模型改造
  • 跨站请求是什么?
  • Mac os 本地搭建部署dify
  • 如何在 Linux 中彻底终止被 `Ctrl+Z` 挂起的进程?
  • 前端基础之《Vue(4)—响应式原理》
  • HCIP(网络类型)
  • 文件操作和 IO
  • 数字人文字转语音-TTS--局域网共用一个数字人平台部署 模型存储更改TTS_HOME
  • 【HD-RK3576-PI】Linux制作deb包的方法
  • STM32 HAL库之GPIO示例代码
  • YSlow使用指南
  • FreeRTOS使任务处于阻塞态的API
  • jvm内存如何调优
  • UWB双通道隧道人员定位方案
  • KWDB创作者计划—KWDB:国产分布式多模数据库的创新实践
  • java爬虫案例