功能未按预期工作

时间:2013-12-09 17:03:45

标签: php arrays function math

我正在开发一个接受2个参数$base$top

的函数

我希望恢复$base小于$top的力量 和 指数。

我期待的输出是$power=125$exp=3

我设法让$exp更正确,但我的$power即将出现为625,而我无法弄清楚为什么会超过$top

这是我的代码:

<?php
$base = 5;
$top  = 130;

function topPower($base, $top) {

    $exp = 0;
    while($power<$top) {
        $exp++;
        $power = pow($base, $exp);  
    } 

    return array($power, $exp-1);
}

$results = topPower($base, $top);
print_r ($results);
?>

3 个答案:

答案 0 :(得分:0)

return array($power, $exp-1);更改为return array( pow($base, $exp-1), $exp-1);

您将根据$power而不是$exp返回$exp-1的值。

答案 1 :(得分:0)

您正在接收此值,因为125低于130,因此它会再次执行;)您应该始终检查下一个,如果超过 - 返回之前的功率。

答案 2 :(得分:0)

问题是5的3的幂是125,那就是“$ top”,这是130.所以你的while循环继续做另一个计算,这是5的4的幂,答案是625。

<?php
$base =5;
$top  =130;

function topPower($base, $top) {

$exp = 0;
while($power<$top) {
$exp++;
$power = pow($base, $exp);  
} 

return array(pow($base, $exp-1), $exp-1);
}

$results = topPower($base, $top);
print_r ($results);
?>