嘗試使用 Java 實作一種演算法,其中該方法將采用輸入陣列、起始索引和結束索引,并使用交換函式遞回地反轉陣列。該方法將正確交換基本情況,但它將回傳該狀態作為答案。
public static char[] stringRecursion(char[] a, int p, int q) {
if (q < p) {
return swap(a, p, q);
}
return stringRecursion(a, p 1, q-1);
}
public static char[] swap(char[] a, int p, int q) {
char temp = a[p];
a[p] = a[q];
a[q] = temp;
return a;
}
uj5u.com熱心網友回復:
您應該通過除錯輕松地自行修復它...
無論如何,如果我正確理解你想要歸檔的內容,你想在每次呼叫遞回函式時交換兩個索引,然后在q < p
. 在您的代碼中,您僅在q
小于時才交換索引p
,這應該是停止的條件。
此外,您并不想在函式中回傳陣列,因為當您更改傳入引數的陣列中的值時,它會自動更新您在主函式中傳遞的陣列!請參閱Java 是“按參考傳遞”還是“按值傳遞”?多了解一點。
示例:
public static void stringRecursion(char[] a, int p, int q) {
if(q < p) return;
swap(a, p, q);
stringRecursion(a, p 1, q-1);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/508406.html
上一篇:在OCaml中遞回洗掉重復的尾部