加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PHP递归函数原理

发布时间:2021-05-29 00:39:16 所属栏目:编程 来源:互联网
导读:递归函数最大的甜头在于可以精简措施中繁杂一再的措施,而且能以这种特征来执行一些较为伟大的运算举措。譬喻列表、动态树型菜单以及遍历目次等操纵。响应的非递
递归函数最大的甜头在于可以精简措施中繁杂一再的措施,而且能以这种特征来执行一些较为伟大的运算举措。譬喻列表、动态树型菜单以及遍历目次等操纵。响应的非递归函数固然服从高,但却较量难编程,并且相对来说可读性差。
递归头脑 递归的首要头脑就是,把一个相对伟大的题目(原始题目)转化为一个个与原题目相似的局限较小的题目(子题目)来办理,等一个个小题目办理了,最终的大题目天然就办理了。

递归要领只需少量的措施就可描写出解题进程所必要的多次一再计较,大大镌汰措施的代码量。虽然,递归函数也不是美满的,也有必然的弱点,那就是递归要领函数的运行服从不高。

在 PHP 中最大递归层数也不是没有限定的,这与措施的内存限额有关,PHP5 默认应承一个措施行使 128M 的内存,因此当递归层数过大导致 128M 内存耗尽时,措施就会发生一个致命错误并退出。PHP7 默认应承行使 256M 的内存。

PHP 应承行使的最大内存可以通过修改 php.ini 文件来修改,如下所示:

; Maximum amount of memory a script may consume (128MB)
;
memory_limit=256M

PHP中的递归 想要实现递归,需满意以下两个前提:

子题目需与原始题目为同样的事,且更为简朴。

不能无穷制地挪用自己,必需有一个出口,化简为非递归状况处理赏罚。


【示例】行使递归函数实现 n! 的阶乘。

<?php

function factorial($num){

//确定递归函数的出口

if($num == 1){

return 1;

}else{

return $num*factorial($num - 1);

}

}

 

echo '15 的阶乘是:'.factorial(15);

?>

运行功效如下:

15 的阶乘是:1307674368000

【示例】计较斐波那契数列。 斐波那契数列数列如下所示:

1、1、2、3、5、8、13、21、34、...

实当代码如下所示:

<?php

function demo($num){

//

if($num == 1 || $num == 2){

return 1;

}else{

return demo($num - 1) + demo($num - 2);

}

}

 

echo '数列第 10 位是:'.demo(10);

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读