为了感觉更聪明,我试图递归地编写每个算法,即使非递归解决方案更具可读性和效率(如"你好,世界!"呵呵)。我用一个简单的最大函数
开始这样做function max ( arr )
{
max_in_bounds(arr,0,arr.length);
}
function max_in_bounds ( A, i, j )
{
// finds the max element in the range of
// indices [i, j) of the array A
var diff = j - i;
if ( diff === 1)
{
return A[i];
}
else if ( diff > 1 )
{
return Math.max(A[i], max_in_bounds(A,i+1,A.length));
}
}
var my_array = [1, 4, -3, 69];
console.log(max(my_array)); // Should print 69
但由于某种原因,我得到了undefined
而我正试图找出原因。任何提示?
答案 0 :(得分:1)
功能没有回复:
function max ( arr ){
return max_in_bounds(arr,0,arr.length);
}
因此返回undefined
。此外,我希望您只是为了学习目的而编写每个递归算法。