PHP递归函数的三种实现方法及如何实现数字累加
递归函数是程序设计中一种常用的函数,其函数本身可以调用本身,但我们必须在调用本身有条件的判断,否则会导致无限的电话。这是一个列表来实现递归函数的三种方法,通过引用的第一个参数,使用第二全局变量,使用静态变量第三种,这些问题需要有基本的了解,包括全局变量,静态变量的引用,理解,也需要了解他们的范围。在这个没有浪费,请看下面。第一种方法:使用引用作为参数
不管引用如何完成,您必须首先理解引用是什么。引用意味着同名的两个变量指向相同的存储地址。
现在,两变量共享内存地址。$ = $;,事实上,美元一不小心与他们原来的内存地址,和$共享一个房间。所以在存储地址的值的任何变化都会影响两值。 U3000 U3000
函数以其自身的方式,甚至是每个动作的相同功能,递归函数被认为是一个参数,并成为两个函数之间形成数据共享的桥梁。虽然这两个函数看起来是在不同的地址运行,但它们实际上是在内存地址中运行的。
复制代码代码如下所示:
函数测试($ = 0,结果=数组()){
美元+;
如果($ < 10){
$结果;
测试($,$结果);
}
回声$;
返回$结果;
}
上面的例子非常简单,有一个1 { 1 } 2 { 3 } { 3 } = > 4 { 4 } = 5 { 5 } = 6 { 6 } = 7 { 7 } = 8 { 8 } { 2 } = 9)。
在这个例子中更有趣的是回声A的值。我相信很多人认为它是12345678910,但实际上它是1098765432。为什么下一个函数递归是在函数尚未执行回波A之前执行的。
回声a的真正执行是当a < 10条件不满足时,回声返回结果。对于上层,我们执行递归函数,并以同样的方式开始执行这一层的回声。
第二种方法:使用全局变量
使用全局变量来完成递归函数,请确保你理解一个全局变量是什么。全球状态变量只是一个参考,在函数外部的变量名称相同,一个变量的函数的范围仍在该函数的范围。这些变量价值观的改变,以及外部命名变量的值是自然变化。但是一旦使用相同名字的变量不再是参考相同的名称。使用全局变量来实现递归函数,它是没有必要了解这么深的层。如果我们保持全局变量的原始视图,我们就可以逻辑地理解递归函数。
复制代码代码如下所示:
函数测试($ = 0,结果=数组()){
全局结果;
美元+;
如果($ < 10){
$结果;
测试($,$结果);
}
返回$结果;
}
第三种方法:使用静态变量
我们经常在类中看到静态,今天我们在递归函数中使用它。记住静态的作用:只在调用第一个调用时初始化变量,并保留变量的值。
栗子:
复制代码代码如下所示:
函数测试(){
静态$ = 0;
回波计数;
数+;
}
测试();
测试();
测试();
测试();
测试();
U3000 U3000
执行这段代码的结果是什么是00000吗它不能是。它是01234。首先,我们调用测试()和静态来初始化第一个计数,然后在每次执行之后,我们将保持$值,并且不再初始化,这相当于直接忽略静态值= 0。
因此,可以将静态应用到递归函数的函数中。静态用于初始化需要用作桥梁的变量作为桥。
复制代码代码如下所示:
函数测试($ = 0){
静态结果=数组();
美元+;
如果($ < 10){
$结果;
测试(A);
}
返回$结果;
}
U3000
总结
所谓递归函数的重点是如何处理函数调用本身,如何确保所期望的结果能够在函数之间合理地传递,当然,在函数之间不需要递归函数。
复制代码代码如下所示:
函数测试($ = 0){
美元+;
如果($ < 10){
回声$;
测试(A);
}
}
这里演示了PHP使用递归函数通过一段代码添加数字积累的方式。
代码如下所示:
复制代码代码如下所示:
< PHP
函数求和(计数){
如果(计数)!= 0):
返回的计数+总和($ count-1);
Endif;
}
总和=(10);
打印总和= $总和;
>
面对PHP递归函数,不必要的神经夹,深入了解变量引用相关知识对于解决此类问题非常有帮助,上述内容是PHP递归函数三种方法以及如何实现所有内容的累计数目的,希望对以后的研究有所帮助。