PHP:为递归函数找到最短的解决方案

时间:2019-02-26 23:24:13

标签: php recursion optimization

我试图解决此问题:给您两个整数(A和B)。如果A

function showAB($a, $b) {
    if ($a > $b) {
        if ($a == $b) {
            return $a;
        } else {
            return $a . "<br>" . showAB($a - 1, $b);
        }
    } 
    else {
        if ($a == $b) {
            return $a;
        } else {
            return $a . "<br>" . showAB($a + 1, $b);
        }
    }
}

但是,有人告诉我,这个问题的解决方案可以用两行或更少的代码来完成,所以我的问题是关于优化现有功能。

2 个答案:

答案 0 :(得分:1)

您仍然可以进行优化而不会使外观看起来很丑陋,尤其是消除毫无意义的逻辑。如果您想要1个衬板,请参考注释,否则您可以删除else语句,并且仍然很容易阅读:

function showAB($a, $b) {
    if ($a < $b) {
        return $a . "<br>" . showAB($a + 1, $b);
    }
    if ($a > $b) {
      return $a . "<br>" . showAB($a - 1, $b);
    } 
    return $a;
}

答案 1 :(得分:0)

高尔夫?您可以使用三元运算符? .. :和'spaceship'运算符<=> -1/0/1 赋予小于/等于/大于

function showAB(int $a, int $b) : string
{
  return $a . '<br>' . PHP_EOL . ($a === $b ? '' : showAB($a - ($a<=>$b), $b));
}