这个递归的PHP函数不返回任何值


This recursive PHP function is not returning any value

我正在尝试一个简单的二进制搜索。 我希望这个函数返回"假"或"真",但它似乎没有返回任何内容。 我尝试返回整数或字符串,只是为了看看它是否会返回另一种数据类型,但它似乎没有这样做。 我做错了什么?

<?php
    function binarySearch($item, $first, $last) {
        $numbers = array(3, 5, 9, 11, 17, 24, 38, 47, 50, 54, 57, 59, 61, 63, 65);
        if ($first > $last) {
            return false;
        }
        else {
            $middle = ($first + $last)/2;
            $middle = (int)$middle;
            if ($item == $numbers[$middle]) {
                echo "found the correct value<br/>";
                return true;
            }
            elseif ($item<$numbers[$middle]) {
                binarySearch($item, $first, $middle-1);
            }
            else {
                binarySearch($item, $middle+1, $last);
            }
        }
    }
    $n = $_GET['txtTarget'];
    $first = $_GET['txtFirst'];
    $last = $_GET['txtLast'];
    echo "the return value is: " . binarySearch($n, $first, $last);
?>

对二进制搜索的递归调用应返回该调用的响应,以返回到调用堆栈:

function binarySearch($item, $first, $last){
    $numbers=array(3, 5, 9, 11, 17, 24, 38, 47, 50, 54, 57, 59, 61, 63, 65);
    if ($first>$last){
        return false;
    }
    else {
        $middle=($first+$last)/2;
        $middle=(int)$middle;
        if ($item==$numbers[$middle]){
            echo "found the correct value<br/>";
            return true;
        }
        elseif ($item<$numbers[$middle]){
            return binarySearch($item, $first, $middle-1);
        }
        else {
            return binarySearch($item, $middle+1, $last);
        }
    }
}

您的二进制搜索函数仅在$first大于$last时返回。

在所有其他情况下,它不会返回任何内容。

二进制搜索函数中将return放在函数调用之前。