java - 在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
}
- 任何人都可以向我解释这种方法是如何工作的。我知道它打印数组中的元素,但我很困惑,因为在递归情况下没有打印语句。
解决方案
假设您有一个输入数组[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] + " ");
}
}
}
推荐阅读
- verdaccio - verdaccio 插件 allow_publish(package) 的版本未定义
- python - 在 Python 中查找数独隐藏单曲的有效方法
- django - 如何使用 AJAX 通过 Django 发送查询集?
- networking - 在 JioFi 3 中寻找 DDNS 或动态 DNS 选项
- r - 如何避免为一个输出重复代码
- django - 我应该将 docker-compose 创建的 /data 文件夹包含到 Git 中吗?
- swift - SwiftUI 视频播放器 - 如何获取当前时间?
- python-3.x - django.db.utils.DataError: value too long for type character varying(4)
- regex - /m 修饰符的 perl 正则表达式意外行为
- php - PHP:将未知数量的参数从数组传递给方法