我正在学习 PHP。无法理解为什么这段代码不起作用。
特别是:为什么 array_sum($x) (1596) 的结果大于 $cap?也许我不理解 while 循环的本质,但在我看来(查看 print_r($x)),循环应该在实际执行之前删除一个步骤。
<?php
function fibonacci_sum($cap = 1000){
list( $cur, $nxt, $seq ) = array( 0, 1, array() );
while ( array_sum($seq) < $cap ) {
$seq[] = $cur;
$add = $cur + $nxt;
$cur = $nxt;
$nxt = $add;
}
return $seq;
}
$x = fibonacci_sum();
echo array_sum($x);
?>
任何见解都值得赞赏。
最好, 哑光
最佳答案
这样看:如果 array_sum($x)
小于 $cap
,那么 while 循环体将再次执行。因此,当 while 循环停止执行时,根据定义,while
顶部的条件将为 false。 (*) 我想你想说的是:
while ( array_sum($seq) + $cur < $cap ) {
这将在您超过 $cap
之前停止,这正是您想要做的。
(*) 是的,是的,关于 break
语句效果的免责声明。
关于php - 在 while 循环中使用 array_sum(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2739101/