[英]Finding Max of an array using Recursion
因此,使用for循環或while循環查找數組的最大值非常簡單,但我想通過遞歸進行嘗試。 由於某種原因,子字符串不起作用-它說“找不到符號”。 為什么是這樣? 我的策略是繼續細分並比較這兩個方面,直到只剩下一個應該是最大數量為止。...我做對了嗎? 謝謝
public static int max(int[] array) {
if (array.length == 1) {
return array[0];
} else {
int mid = (array.length) / 2;
int leftmax = max(array.substring(0, mid));
int rightmax = max(array.substring(mid, array.length));
if (leftmax > rightmax) {
return leftmax;
} else {
return rightmax;
}
}
}
您將要使用Arrays.copyOfRange
。 Substring
在數組上不起作用。
int[] firstHalf = Arrays.copyOfRange(original, 0, original.length/2);
int[] secondHalf = Arrays.copyOfRange(original, original.length/2, original.length);
我無法評論您的算法。
由於array
類型為int[]
而不是String
,因此不能使用substring()
。 相反,請跟蹤正在搜索的索引。 在每次迭代中復制數組都浪費了空間和時間。
int max( int[] array ){ return max( array, 0, array.length - 1 ); }
int max( int[] array, int low, int high )
{
if (low == high) {
return array[low];
}
else {
int mid = (high + low) / 2;
int leftmax = max(array, low, mid );
int rightmax = max(array, mid, high );
if (leftmax > rightmax) {
return leftmax;
}
else {
return rightmax;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.