首页 > 其他分享 >递归相关题

递归相关题

时间:2023-03-31 17:46:50浏览次数:45  
标签:优先 遍历 return 递归 int 相关 桃子

遵循四个原则,

1) 程序执行一个函数时,就创建一个新的受保护的独立空间(新函数栈)

2) 函数的局部变量是独立的,不会相互影响

3) 递归必须向退出递归的条件逼近,否则就是无限递归,死龟了:)

4) 当一个函数执行完毕,或者遇到 return,就会返回,遵守谁调用,就将结果返回给谁。

斐波那契数列

请使用递归的方式,求出斐波那契数 1,1,2,3,5,8,13... 给你一个整数 n,求出它的斐波那契数是多少?

int F(int x) {
  if (x == 1 || x == 2) {
    return 1;
  }
  return F(x - 1) + F(x - 2);
}

  

猴子吃桃子问题

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

// 第十天 1
// 第九天 (1+1)*2
// 第八天 ((1+1)*2+1)*2
int f(int x) {
  if (x == 10) {
    return 1;
  }
  return (f(x + 1) + 1) * 2;
}

  

个人思考:

递归就是栈的先入后出思路,跟深度优先遍历类似,找到最深处的解,出栈(将解带出到下面的栈),再接着出栈,直到栈出完,也就算出最开始的解

递归是有规律的,没有规律的也不是递归

可以看看深度优先遍历的讲解,对栈的出和入有清晰的了解后,递归也就顺理成章的知道原理了

见:浅析深度优先和广度优先遍历实现过程、区别及使用场景

 

标签:优先,遍历,return,递归,int,相关,桃子
From: https://www.cnblogs.com/strive-sun/p/17276994.html

相关文章

  • 进程相关命令
    一、ps命令功能显示当前进程的状态(ProcessStatus)语法ps[options]常用语法选项-A:列出所有的进程-e:与-A功能类似-W:显示加宽可以显示较多的资讯-au:显示较详细的信息-aux:显示所有包含其他使用者的进程示例:ps-aux显示所有进程的详细信息示例:ps-ef......
  • tomcat相关问题
    docker安装tomcat启动出错参考:https://blog.csdn.net/cucgyfjklx/article/details/122804690dockertomcat仓库参考:https://hub.docker.com/_/tomcat?tab=tags......
  • oracle 优化监控相关
    SELECTsn.username,m.SID,sn.SERIAL#,m.TYPE,DECODE(m.lmode,0,'None',1,'Null',2,'RowShare',3,'RowExcl.',4,......
  • 设计模式(三十)----综合应用-自定义Spring框架-自定义Spring IOC-定义bean、注册表相
    现要对下面的配置文件进行解析,并自定义Spring框架的IOC对涉及到的对象进行管理。<?xmlversion="1.0"encoding="UTF-8"?><beans>  <beanid="userService"class="com.itheima.service.impl.UserServiceImpl">    <propertyname=&qu......
  • 相对布局的相关属性RalativeLayout
    第一类:属性值为true或false   android:layout_centerHrizontal             水平居中   android:layout_centerVertical              垂直居中   android:layout_centerInParent              相对于父元素完全居中......
  • 第九天(nginx的相关总结)
    Nginx总结 文章目录1.Nginx1.1.什么是Nginx1.2.WEB服务器1.3.安装Nginx1.3.1.yum安装1.3.1.1.启动命令1.3.1.2.配置文件1.3.1.3.web目录1.3.2.安装包安装1.4.Nginx配置文件1.5.虚拟主机的三种方式1.6.外网配置1.6.1.配置开始1.7.内网配......
  • WebRTC通信时获取速率(每秒帧数)相关信息
    在用WebRTC进行通信时,可以通过RTCPeerConnection对象的getStats方法获取相关的连接统计信息,以此获取每秒帧数。--ByBriskyu1 getStats的使用方法constpc=newRTCPeerConnection()//获取视频流对象varselector=pc.getRemoteStreams()[0].getAudioTracks()[0]//......
  • python_Package相关
    将自己的工作,构建为python的Package并上传至PYPI,使得其他开发者可以通过pip安装并使用。这是我一直想做的事情,最近我成功将微博数据采集项目封装并上传至PYPI。为使得后续......
  • oracle创建用户以及相关授权
    目录oracle创建用户以及相关授权1、创建用户2、删除用户3、授予用户登录数据库的权限4、授予用户操作表空间的权限5、授予用户操作表的权限(包含有createindex权限,alter......
  • 两两交换链表中的节点|递归
    两两交换链表中的节点链表中每两两相邻的节点将其对调位置,涉及的主要操作位交换节。但需要注意初始位置的交换即返回值,以及奇数个节点的处理方法,这里给出两种方法,迭代和......