PHP递归函数

Posted 正义联盟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP递归函数相关的知识,希望对你有一定的参考价值。

递归函数

递归函数是指直接或间接的调用函数自身的函数。

递归函数的条件

  • 在每一次调用自己时,必须是(在某种意义上)更接近于解;
  • 必须有一个终止处理或计算的准则;

示例:

<?php
	function demo($a=1){
		if($a<=3){
			echo "第{$a}次执行<br>";
			$a++;
			demo($a);
		}
	}
	demo();

效果如图:

  这个很好理解把,首先$a=1条件成立执行真区间,打印一次,$a自增后作为实参传入,调用自身,此时$a=2,条件成立,再次打印。再自增再传入,$a=3,条件依旧成立,第三次打印,自增$a=4传入,调用。此时条件不成立。函数执行完结。一共打印了3次。

示例2:

//计算从1到10的累加和
function demo($a){
	if($a >=1 ){
		return $a + demo($a - 1);
		//第一次执行 10 + demo(9)
		//第二次执行 10 + 9 + demo(8)
		//第三次执行 10 + 9 + 8 + demo(7)
		//.......
		//第十次执行 10+9+...demo(0),此时$a=0条件不成立,依次返回,返回到第一层即0+1+2+3..+10,这就是递归
	}
}
echo demo(10);	//55

示例3:

function demo($num)
{
    echo $num, "<br>";	

    if ($num > 0) {
        demo($num-1);
    }

    echo $num, "<br>";
}

demo(3);		//3 2 1 0 0 1 2 3
  • 函数的每一次调用, 都是独立的空间, 不会互相影响.
  • 代码从上往下执行, 执行完毕才会继续往下执行。
  • 所以示例3依次打印3,2,1,0(此时条件不成立执行真区间后代码),0(最内层demo结束返回上一层),1(这是的$num为1,每层的$num互不影响),2(本层$num为2),1(最外层函数结束)。

理解递归参考汉诺塔问题php解决

以上是关于PHP递归函数的主要内容,如果未能解决你的问题,请参考以下文章

nodejs常用代码片段

PHP-递归算法

如何将递归函数的答案放入数组(PHP)中?

我在 laravel 中的递归函数不调用自己

那个PHP中号称最难的‘递归函数’

21个常用代码片段