在 do while 循环中重复调用一个函数

calling a function repeatedly in do while loop

大家好,

所以我正在学习 TypeScript 并尝试构建一个算法可视化工具供自己学习。我只是遇到了一个我无法通过的障碍。我目前的想法是我可以将 returning 数组分配给 arr 并且它只会在 do/while 循环中重新调用它自己,但是,我得到以下错误:

所以我的下一个想法是,是否有办法解决这个问题,或者也许我可以调用函数 binarySearch 本身,并且还能够 return 相同的变量来 handleOnClick。

github 回购 - link

const handleOnClick = () => {
    let element = 2;
    let arr = [0, 1, 2, 3, 4, 5, 6]
    do {
        var [array, isDone, midPosition] = binarySearch(arr, element);
        // gives [0, 1, 2] false 4
        
        arr = array;
        console.log(array, isDone, midPosition)
    } while (isDone);
}

export function binarySearch (array: number[], element: number) {
    let start = 0;
    let end = array.length - 1;
    let mid = Math.floor((start + end) /2);

    if (element === array[mid]) {
        mid = mid + 1;
        return [array.slice(start, end+1), true, mid]
    }

    if (element < array[mid]) {
        end = mid - 1;
        return [array.slice(start, end+1), false, mid+1];
    } else {
        start = mid + 1;
        return [array.slice(start, end+1), false, mid+1];
    }


}

您需要为 binarySearch() 指定元组 return 类型,否则默认情况下 TypeScript 会推断联合类型 (number | boolean | number[])[] 的数组。

function binarySearch (array: number[], element: number): [number[], boolean, number]