繁体   English   中英

将数组传递给函数PHP

[英]Passing arrays to functions PHP

我刚开始学习PHP,遇到了以下代码,我很难理解:

<?php
function f($v, $n) {
    if ($n <= 0) return 1;
    else
    return $v[$n-1] * f($v, $n-2) + 1;
}
$a = array(0,1,2,3);
print (f($a, 4));
?>

该脚本返回值7。由于$v是一个数组,我无法理解f($v, $n-2)部分如何返回值2。 我是否应该放入$v[number]类的东西,使其具有值? 命令echo "$a" (或$ v)和print($a)返回“ array”消息,后跟PHP通知。

在这种情况下, $v获得什么价值?

非常感谢!

是的,因此您的$ f()是lambda函数,因此可以通过仅调用关联的值来触发。

在数组中,您有4个位置从0到3;

当您执行以4为索引的lambda时,将发生以下情况:

对于索引4
v [(4-1)] = 3
3 * f($v, (4-2)) + 1

f($ v,(4-2))
v [(2-1)] = 1

1 * f($v, (2-2)) + 1

f($ v,(2-2))
如果被触发为$ n <=0。自动返回1;否则返回0。

因此,将它们从下到上放在一起,您将拥有:

3 *(1 * 1 +1)+1

遵循数学规则,首先解决括号下的内容,然后相乘,然后求和:

3 * 2 +1 = 6 +1 = 7

希望一切都清楚!

该函数被递归调用。 这是函数调用背后的公式在幕后的样子:

3 * (1 * (1) + 1) + 1

括号内的值是递归调用的结果。

结果是7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM