在 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]
大家好,
所以我正在学习 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]