首页 > 解决方案 > 在java中通过递归打印数组元素

问题描述

public static void displayArray(int array[], int first, int last) {
  if (first == last)
    System.out.print(array[first] + " ");
  else {
    int mid = (first + last) / 2;
    displayArray(array, first, mid);
    displayArray(array, mid + 1, last);
  } // end if
}

- 任何人都可以向我解释这种方法是如何工作的。我知道它打印数组中的元素,但我很困惑,因为在递归情况下没有打印语句。

标签: java

解决方案


假设您有一个输入数组[1, 2, 3, 4, 5],例如

int[] array = new int[]{1, 2, 3, 4, 5};
displayArray(array, 0, array.length - 1);

现在函数是这样调用的,

displayArray(array, 0, 4) {
    int mid = (0 + 4) / 2 = 2;
    displayArray(array, 0, 2) { // first, mid
       int mid = (0 + 2) / 2 = 1;
        displayArray(array, 0, 1) { // first, mid
            int mid = (0 + 1) / 2 = 0;
            displayArray(array, 0, 0) { // first, mid
              System.out.print(array[0] + " ");      
            }       
            displayArray(array, 1, 1) { // mid + 1, last
              System.out.print(array[1] + " "); 
            }
        }       
        displayArray(array, 2, 2) { // mid + 1, last
            System.out.print(array[2] + " "); 
        }
    }       
    displayArray(array, 3, 4) { // mid + 1, last
          int mid = (3 + 4) / 2 = 3;
          displayArray(array, 3, 3) { // first, mid
              System.out.print(array[3] + " "); 
          }       
          displayArray(array, 4, 4) { // mid + 1, last
              System.out.print(array[4] + " "); 
          }
    }
}

推荐阅读