为了感觉更聪明,我尝试递归地编写每个算法,即使非递归解决方案更可读、更高效(就像"你好,世界!"呵呵)。我开始用一个简单的最大函数来做这件事
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
,我正在努力找出原因。有什么提示吗?
函数中没有返回:
function max ( arr ){
return max_in_bounds(arr,0,arr.length);
}
因此返回CCD_ 2。我也希望你写这些每一个递归算法只是为了学习的目的。