算法入门——递归的理解
来源:互联网 发布:田纳西大学 知乎 编辑:程序博客网 时间:2024/06/16 17:34
在计算机这个行业,特别是做算法的萌新们,在学习算法或者程序设计时都会遇到一个问题,那就是递归。对于递归,再书上通常就是这样一句话,程序或者方法自己调用自己。萌新们的问题可能就出在这句话上了,那么究竟什么叫做自己调用自己呢?这怎么个调用的方式呢?是把自己所有的代码再跑一次还是什么呢?其实,要回答这几个问题就要想明白这种调用对应什么结构,然后有了清晰的结构自然就能够明白这句话的具体内涵是什么了。
为了找到这种结构,不妨构造一个代码段如下:
function(parameters)
{
if 退出条件 return
function(subparameters1)
function(subparameters2)
……
function(subparametersn)
}
那么这段代码怎么运行的呢?假设仅仅递归2次,在这里将递归的代码展开就有如下的形式
function(subparameters2)
{
function(parameters)
{
if 退出条件 return
function(subparameters1)
{
if 退出条件 return function(subparameters2){
if 退出条件 return ……{
function(subparametersn){
if 退出条件 return { }
}
}
}
}
}
上面写了一堆的“{}”可能把你绕晕了,现在咱们就一起来从上面这个代码的括号结构来寻找我们要的结构,看看这一层一层的括号似乎和Windows的文件夹一层层的打开方式类似,是的你没有看错的确是这样。就像你在打开电脑在不同的文件夹内溜达,结果到底了还是没有找到你想要的东东,(这儿假如你我们没有意见回到根目录的快捷方式),那么,你是不是得一层一层的回到上一层目录呢?是的就是这样。你会说,废话这和递归有啥关系呀?好亲们,我们看看上面我粘贴的一堆的括号是不是和我们找东西的时候没找到回到根目录类似呢?对的,你真聪明,的确是这样的。那么想一想,Windows的的文件是按照什么结构组织的呢?对的是树形结构。好找到这个结构有兴趣的同志们在次体会一下递归吧!
(欢迎留言批评指正!)
- 算法入门——递归的理解
- 递归算法终极理解—用人脑理解递归算法
- 算法入门——递归
- 递归算法的理解
- 【算法】递归的理解
- 递归算法的理解
- 递归算法的理解
- 递归算法——入门汉诺塔
- 汉诺塔递归算法的理解
- Java递归算法的理解
- 递归算法的一种理解
- 对递归算法的理解
- 数据结构与算法分析(一) —— 深入理解递归算法的调用过程
- C++递归算法:我的理解
- java中递归算法的理解
- 递归算法的理解(转载)
- 递归算法的理解与运用
- 对于汉诺塔递归算法的理解
- CCPC.2017哈尔滨站-重现赛-D(瞎搞)
- CSDN-markdown编辑器使用方法
- Oracle实例恢复
- 照我说的做,你的英语会飙升
- JavaScript实现表单验证后的聚焦
- 算法入门——递归的理解
- construct 2游戏制作
- [C/C++]C语言经典之判断素数
- python编写简易聊天室实现局域网内聊天
- python起步 内建函数(1)
- 《浪潮之巅》笔记
- Android 购物车动画按钮
- 没错,我准备和你一起学习人工智能
- 网络编程(二)