为什么我的递归函数返回“未定义”?

普拉尚特·蒂亚加

该函数正在返回undefined,它是一个简单的 JavaScript 二进制搜索代码。当我检查一个console.log()函数时,它确实在工作。下面是我的源代码:

var array=[1,2,3,2,4,5,6,8,7,8,9];
var searching= 3;
var starting = 0;
var ending = array.length-1;

var result = binarysearch(array,searching,starting,ending);
console.log(result); // throws undefined

function binarysearch(data,target,start,end){

var mediane = Math.round((start+end)/2);

if (data[mediane] == target) return mediane;  // console.log(mediane) gives 2 
if (data[mediane] > target) binarysearch(data,target,start,mediane-1);
if (data[mediane] < target) binarysearch(data,target,mediane+1,end);
大熊猫

很简单的。使用return遵循调用堆栈。

var array=[1,2,3,2,4,5,6,8,7,8,9];
var searching= 3;
var starting = 0;
var ending = array.length-1;

var result = binarysearch(array,searching,starting,ending);
console.log(result); // throws undefined


function binarysearch(data,target,start,end){

var mediane = Math.round((start+end)/2);

if(data[mediane] == target) return mediane;  // console.log(mediane) gives 2 
if ( data[mediane] > target) return binarysearch(data,target,start,mediane-1);
if ( data[mediane] < target) return binarysearch(data,target,mediane+1,end);

}

解释:

当您使用递归调用时,控制权会从一个函数分支转移到另一个函数分支。为了返回一个确定的值,你需要传递控制(函数上下文,或者知道程序现在在哪里执行的东西)。你没有返回递归分支;这意味着执行堆栈正在创建一个新函数,并且由于它没有获得输出,因此将其视为一个单独的分支。

当您执行 时return,上下文知道它必须将函数分支出来并使用最终返回值:在本例中为2我希望这有帮助!:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的递归函数返回未定义?

为什么此递归函数返回未定义?

为什么返回值在我的递归函数中变得未定义?

为什么我的函数返回“未定义”

为什么我的函数总是返回未定义的?

为什么我的 nodejs 函数返回未定义?

为什么函数返回未定义?

为什么递归函数在返回数组上返回未定义?

为什么我的函数未定义?

递归函数返回未定义的值

TypeScript递归函数返回未定义

返回未定义的递归异步函数

递归函数返回未定义的javascript

为什么我的变量在我的函数之外未定义?

为什么当我给它一个参数时函数返回未定义

为什么我的函数会返回未定义以及反向字符串

为什么我的d3映射函数返回未定义的源属性?

为什么我尝试访问异步函数时会返回未定义的?

为什么我的API调用函数返回未定义的对象?

为什么我的简单Java OOP游戏中的内部函数返回未定义的状态

为什么我的函数返回一个未定义的数组作为项目?

为什么我的函数(调用时)总是以未定义的形式返回?

为什么我在 Firebase 中收到此错误“函数返回未定义、预期的承诺或值”

为什么我使用 javascript 的 reduce 函数返回“未定义”

JavaScript函数调用返回未定义,为什么?

为什么 JS Map 函数返回未定义?

为什么此异步函数返回未定义?

为什么Javascript函数在创建时返回“未定义”?

为什么 ?函数的对象参数返回未定义的 JS