【问题标题】:Php script for array exercises数组练习的php脚本
【发布时间】:2021-03-10 13:50:59
【问题描述】:

我正在尝试解决[此练习][1]... 我正在编写以下代码:

$steps=8;
$path=['U','D','D','D','U','D','U','U'];

function countingValleys($steps, $path) {
    // Write your code here
    $sea=0;
    $valley=0;
    $key=0;
    function check($steps, $path,$valley,$key,$sea){
       ($path[$key]=='D')?$sea--:$sea++;
       if($sea<0) $valley++;
       while($sea<0){
           $key++;
           if($key==$steps) return $valley; else ($path[$key]=='D')?$sea--:$sea++;
      }
       $key++;
       if($key==$steps) return $valley; else check($steps, $path,$valley,$key,$sea);
     }
     $Return=check($steps, $path,$valley,$key,$sea);
     return $Return;
}
$Return=countingValleys($steps, $path);
echo $Return;

它突然返回一个空字符串,而不是它应该返回的结果......你能帮帮我吗? 谢谢 [1]:https://www.hackerrank.com/challenges/counting-valleys/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=warmup

【问题讨论】:

  • 为什么函数里面有函数?你真的应该花一些时间来格式化这段代码。评估起来会容易得多。

标签: php scripting


【解决方案1】:

它是空字符串,因为$Return=countingValleys($steps, $path); 采用空值。 原因是在check() 方法中,您返回$valley 或递归调用check(),但您还必须返回它,否则该方法的行为类似于void 方法。

<?php

$steps = 8;
$path = ['U', 'D', 'D', 'D', 'U', 'D', 'U', 'U'];

function countingValleys($steps, $path)
{
    // Write your code here
    $sea = 0;
    $valley = 0;
    $key = 0;
    function check($steps, $path, $valley, $key, $sea)
    {
        ($path[$key] == 'D') ? $sea-- : $sea++;
        if ($sea < 0) $valley++;
        while ($sea < 0) {
            $key++;
            if ($key == $steps) return $valley; else ($path[$key] == 'D') ? $sea-- : $sea++;
        }
        $key++;
        if ($key == $steps) return $valley; else return check($steps, $path, $valley, $key, $sea);
    }

    $Return = check($steps, $path, $valley, $key, $sea);
    return $Return;
}

$Return = countingValleys($steps, $path);
echo $Return;
// output 1

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多