[英]Is Java fully aware of the entire recursive method even if the condition is not met?
[英]Recursive Java method does not fully execute
嘗試使用 Java 實現算法,其中該方法將采用輸入數組、起始索引和結束索引,並使用交換 function 遞歸地反轉數組。 該方法將正確交換基本情況,但它會返回 state 作為答案。
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;
}
您應該通過調試輕松地自行修復它......
無論如何,如果我正確理解您想要歸檔的內容,您希望在每次調用遞歸函數時交換兩個索引,並在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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.