首页 > 试题广场 >

下题的运行结果是??php$num = 7;f...

[单选题]
下题的运行结果是?
<?php
$num = 7;
function add($num){
static $total = 0;
if($num>=1){
$total+=$num;
add(--$num);
}else{
return $total;
}
}
var_dump(add($num));
  • int(28)
  • NULL
  • string(0) &quot;&quot;
  • int(0)
第一次调用该函数没有return语句,所有无论多少层递归,都不会有返回值的
发表于 2019-12-08 22:13:18 回复(0)
else里面的return只是返回给了最后一次递归的add,.而我们最开始调用的add是没有返回值的,没有返回值的函数var_dump为null
发表于 2019-08-23 11:53:39 回复(0)
正确的递归

编辑于 2020-03-11 11:04:38 回复(2)

完全没注意return

编辑于 2019-10-25 12:10:57 回复(0)
add(--$num)前面没有return返回值,函数里面只有过程,而没有结果给add(),所以调用该函数的时候当然不会有值输出
发表于 2019-08-31 17:40:14 回复(0)
那我想知道 此题中 static 的作用又是啥 ,既然是静态变量,怎么就变成 null 了
发表于 2021-04-23 07:47:04 回复(0)
认了,确实是功底欠佳,有没有return都没看出来。哈哈。
发表于 2021-04-19 22:43:56 回复(0)
第一次循环,没有返回值,所以var_dump为空
发表于 2020-09-10 17:36:17 回复(0)
这道题坑的死死的,长记性了
发表于 2019-10-25 11:32:06 回复(0)
<?php $num = 7; function add($num){ static $total = 0; if($num>=1){ $total+=$num;  
add(--$num);  
}else { return $total;  
} return $total; 
} 
var_dump(add($num)); ?> //上述代码少了一句return $total;  

编辑于 2019-10-16 22:48:09 回复(0)
第一次调用的add是没有返回值的。。。
发表于 2019-08-24 22:42:50 回复(0)
逻辑陷阱。注意最后一次是谁调用的add,
发表于 2019-08-23 11:16:42 回复(0)