【问题标题】:calling a function repeatedly in do while loop在 do while 循环中重复调用函数
【发布时间】:2020-09-23 23:20:05
【问题描述】:

大家好,

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

所以我的下一个想法是是否有办法解决这个问题,或者我可以自己调用函数 binarySearch 并且还能够将相同的变量返回给 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];
    }


}

【问题讨论】:

    标签: javascript reactjs typescript binary-search


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多