簡體   English   中英

遞歸 Java 方法沒有完全執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM