我是算法初学者,刚开始阅读Michael Rich的“Java中的数据结构和算法”。他提出了一个名为“BinarySum(A,i,n)”的基于二元递归的函数。递归求和一个二维数组的元素?
BinarySum(A,i,n)
Input:An array A and integer i and n
Output: The sum of n integers in A starting and index i
if n==1 then
return A[i];
return BinarySum(A,i,[n/2])+BinarySum(A,i+[n/2],[n/2])
而且我们最初将通过BinarySum(A,0,n)开始呼叫。
在接下来的练习中,有一个问题要求我描述一种使用递归来添加一个n * n二维整数数组的所有元素的方法。他给出的提示是我们可以通过使用两个递归调用来遵循BinarySum(A,i,n)的风格。
我被困在这个,我可以想到像n * n矩阵的每一行循环的解决方案,然后为每一行,我打电话BinarySum(A,我,n),然后相加在一起。但我真的不认为这是这个练习的目的。
想过其他可能的解决方案,但我坚持使用递归实现它。专家可以提供一些提示吗?谢谢。
2014-09-22
Kevin