学习笔记—递归
来源:互联网 发布:c语言中多个if else 编辑:程序博客网 时间:2024/05/20 12:50
PS:前几天在蓝桥杯选拔的时候碰到一题用递归的题目,但因为太久没回顾都忘了,所以在这里用自己能理解的话简单记录一下。
递归算法
定义
直接或间接的调用该函数本身;
例
int f(int x){ int y,z; x=f(y); return (2*x);}
步骤
(1)“回溯”
确定关系,必定存在从某一项开始,前一项和后一项之间有存在一种关系;
按照这个关系,把所有项遍历确定关系。
(2)“递推”
确定目标(所求的点)后,采用 递推 的方法 得到目标点。
注意
递归过程不是无限制的,必须有一个结束递归过程的条件。
例子分析
五个人,第五个比第四个大两岁,第四个比第三个大两岁,第三个比第二个大两岁,第二个比第一个大两岁,第一个十岁。
关系: age(5)=age(4)+2
age(4)=age(3)+2
age(3)=age(2)+2
age(2)=age(1)+2
age(1)=10
age(n)=10 (n=1)
age(n)=age(n-1)+2 (n>1)
则可以看出目标边界为5,确定的出发点为1。
从1 递推 到5可根据关系确定所有人的值。
#include<iostream>using namespace std;int main(){ int age(int); int n=5; cout<<"no.5 number is:"<<age(5)<<endl; return 0;}int age(int n); //递归函数{ int c; if(n==1) //如果n=1 c=10; //值确定(结束的条件)不再调用自己, else c=age(n-1)+2;//递归再次调用自己,减到n=1(确定的边界)时递推回结果 return(c);//返回需要的值}
在代码中,开始是age(5),函数被调用了5次,age(5),age(4),age(3),age(2),age(1),其中age(5)是main调用的,其他是在age中被调用,即递归了四次。
在某一次调用age函数的时候不是立即得到age(n)的值,而是一次又一次地进行递归调用,到age(1)时才有确定的值,再往回递推出age(2),age(3),age(4),age(5)。
注意 age(1)的值是确定的,当n=1时,执行 “c=10” ,即不再调用age函数,递归调用结束。再把10作为age(1)的值返回age函数重新递推。
阅读全文
0 0
- 学习笔记—递归
- java学习笔记.08——递归
- <6>python学习笔记——递归
- 【C++】学习笔记三十七——递归
- PHP学习笔记——递归函数
- 数据结构学习笔记——递归(分而治之)
- 学习笔记-递归,重载
- 递归学习笔记
- 递归学习笔记
- 递归学习笔记
- C#递归学习笔记
- Linux学习笔记--递归
- 学习笔记----递归函数
- JAVA递归学习笔记
- 递归学习(笔记)
- 算法学习笔记:递归
- 递归调用学习笔记
- 学习笔记-递归函数
- 移植uboot之修改代码支持NorFlash记录续集
- xmind的备注note中红色下划线如何去掉(转自百度)
- 第一篇文章
- MySql免安装版安装配置及安装后MySQL服务无法启动解决方案
- 视频手术刀 video bistoury(二)--ffmpeg 基石
- 学习笔记—递归
- react-native 集成支付宝
- 在windows下简单快速的搭建tensorflow深度学习环境
- react-native 集成微信支付
- 谈谈Shiro的原理及在SSM和SpringBoot两种环境下的使用姿势(下篇)
- java基础之关键字static
- cocos2dx-mainloop
- Pycharm 配置
- QQ通信原理