我是算法初學者,剛開始閱讀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),然後相加在一起。但我真的不認爲這是這個練習的目的。
想過其他可能的解決方案,但我堅持使用遞歸實現它。專家可以提供一些提示嗎?謝謝。