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递归函数三种方法以及如何实现所有内容的累计数目的,希望对以后的研究有所帮助。