gpt4 book ai didi

php - 谁能帮我逐行描述这个php代码: functions & recursions

转载 作者:行者123 更新时间:2023-12-04 16:45:22 24 4
gpt4 key购买 nike

function f2($n, $a)
{
if ($n == 0)
return 0;
return $a + f2($n-1, $a); // Changed return a... to return $a...
}

echo f2(3,4);

这输出 12,我只是不明白为什么。不过,我的想法是这样的:

显然,$n 和 $a 是将取代值的变量。在这个例子中,n 是 3,a 是 4。基本情况是 if 语句,它的作用类似于 n 之间的循环。因此,由于 n 为 3,并且 n 设置为 = 0 ,因此代码循环 3 次。

现在我没有得到返回 a + f2(n-1, a) 部分。显然这就是数学计算的地方,但是如何计算呢?

我认为它是这样循环的:

4 + f2(2, 4)
4 + f2(1, 4)
4 + f2(0, 4)

但是它加上了什么才能使总和为 12?

所以我问的是,如果我理解正确,如果不正确,实际发生了什么以及输出 12 是如何的。

最佳答案

第一次调用是f2(3,4)

f2(3,4)
|
return 4 + f(2,4)
|
return 4 + f(1,4)
|
return 4 + f(0, 4)
|
return 0; // and now unwinding the stack, 0 gets passed to the prev. return called.
|
return 4 + 0 // 4 gets passed to the prev. return called
|
return 4 + 4 + 0 // 8 gets passed to the prev. return called.
|
return 4 + 4 + 4 + 0 // f2(3,4) now returns a value of 12

查看上面的调用堆栈,调用的第一个返回将是:

返回 4 + 4 + 4 + 0

返回 + 调用 f2+ 运算符将 a 与下一个函数调用链接起来,最后累积所有中间值调用的第一个 return 中的值。

关于php - 谁能帮我逐行描述这个php代码: functions & recursions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47779471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com