PHP递归与迭代的区别与联系 筋斗云网络

递归自身调用自身,每一次调用把问题简化,直到问题解决.
迭代:就是指在某个范围内,反复执行相同工作.
递归: 5只猴子,每只猴子,摘1颗桃,完成1步工作
迭代: 1只猴子,这只儿子,摘5颗桃,完成5步工作

递归自身调用自身,每一次调用把问题简化,直到问题解决.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
/*
这是一个典型的递归调用,
在计算出结果前,最多的时候,共有10个函数同时运行.
*/
function recsum($n) {
    if($n > 1) {
        return $n + recsum($n-1);
    } else {
        return 1;
    }
}
echo recsum(10),'<br />';
迭代:就是指在某个范围内,反复执行相同工作.
1
2
3
4
5
6
7
function itsum($n) {
    for($sum=0,$i=1;$i<n;$i++) {
        $sum += $i;
    }
    return $sum;
}

理论上:(借助栈)递归都是可以转化为迭代的!

迭代来创建级联目录
./a/b/c/d
思路:要把从浅到深创建目录的步骤,列成单子.
然后1只小猴,一层层的去创建

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function mk_dir($path) {
    $arr = array();
    while(!is_dir($path)) {
        // 例 /a/b/c/d 如果不目录,则是我的工作
        array_push($arr,$path); //工作计划入栈
        $path = dirname($path);
    }
    //print_r($arr);
    if(empty($arr)) {
        return true;
    }
    // 工作计划出栈
    while(count($arr)) {
        echo $tmp = array_pop($arr),'出栈<br />';
        mkdir($tmp);
    }
    return true;
}
mk_dir('./a/b/c/d/e');
(0)

相关推荐

  • 学习PHP生成器的使用

    学习PHP生成器的使用 什么是生成器? 听着高大上的名字,感觉像是创造什么东西的一个功能,实际上,生成器是一个用于迭代的迭代器.它提供了一种更容易的方式来实现简单的对象迭代,相比较定义类实现Itera ...

  • [PHP] 判断两个数组是否相同

    php中判断两个数组是否相同 , 如果是关联数组 , 可以直接使用==来进行判断 $c=array("a"=>"12"); $d=array(" ...

  • PHP数据结构-栈和队列的应用

    栈和队列的应用 通过栈和队列的学习,我们似乎会感觉到其实数据结构还是非常简单的嘛.当然,这只是一个开始,我们从顺序表.链表开始,到现在的栈和队列,其实都是为了将来在铺路.在树和图的遍历算法中,都可以见 ...

  • PHP中数组的区别

    PHP中数组的区别

  • php递归和迭代的区别

    <?php $arr=array( array('id'=>1,'name'=>'河南省','pid'=>0), array('id'=>2,'name'=>'信阳 ...

  • PHP递归与迭代

    在 PHP 中,我们经常会遇到这样的情况:在面临一个庞大的问题时,需要把这个庞大的问题拆分成各个细小的单元,解决了每个细小单元的问题,这个庞大的问题便迎刃而解了.递归与迭代就是这种思想的体现. PHP ...

  • 新兴技术推动网络安全技术不断加速迭代演进 ——方滨兴院士撰文谈网络安全技术发展

    俗话说,道高一尺,魔高一丈. 网络安全防护技术与攻击技术永远是一结矛盾体,两者在相互比拼争斗中不断前进与发展.方滨兴院士日前撰文指出,网络安全技术是一种特殊的伴生技术,它随着所服务主体对象的技术更迭不 ...

  • Python | 循环与递归的区别

    根据面向对象程序设计的思想,对象包括属性(数据)和方法(操作).其实,递归和循环就相当于两种非常相似的操作,但是它们都有适合自己操作的数据.可以把一个问题看作一个对象,问题由数据(问题没有解决时的状态 ...

  • 儒、释、道三家文化的七大区别

    闲云谷 峰下闲云云上松,珍兰奇蕙伴节丛:不忍移爱进瓦罐,卷书抱坛迁谷中. 994篇原创内容 公众号 一.文化主旨 儒家文化--积极进取的文化 儒家倡导知识的获取和品德的培养,是一种积极向上的文化. 道 ...

  • 招摇撞骗罪和诈骗罪有什么区别

    招摇撞骗罪和诈骗罪都表现为欺骗行为,招摇撞骗罪也可以像诈骗罪一样骗取财物,两者容易混淆,大家知道招摇撞骗罪和诈骗罪有什么区别吗? 律师解答: 招摇撞骗罪侵犯的客体主要是国家机关的威信及其正常活动,而诈 ...

  • 香港服务器托管和租用有什么区别?

    香港服务器托管和租用有什么区别?托管和租用都是服务器选择使用方式,想要知道香港服务器托管和租用两种方式有什么区别以及哪种方式比较好,就需要深入了解它们,下面我们就聊聊香港服务器托管和租用的区别. 什么 ...

  • “全款”和“贷款”买房有什么区别?内行:10年后,差距一目了然

    因为现在国内的房价总体上呈现出不断上涨的趋势,尤其是在一二线城市靠近市中心的房子更是高到令现在的不少家庭都有着很大的生活重担,对于现在的年轻人来说也很难能够在他们的承受范围之内. 所以,如果高房价持续 ...

  • “普通人vs 女网红的区别...” 哈哈哈哈哈哈哈哈哈过于真实!

    网上冲浪久了 不得不感叹 现在的女网红真的很努力 为了拍出 前凸后翘的照片 不管何时何地 都执着地凹着浮夸的摆拍造型 网友甚至总结出了当网红的精髓 普通人vs 女网红的区别 学废了 离网红就差一个骨盆 ...