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 }
核心原理说明
这个方法采用了分治的递归思路,所有打印逻辑都收敛在递归终止条件中,无需在拆分的递归分支额外加打印语句:
- 当传入的数组区间
[first, last]存在多个元素时,else分支仅做区间拆分动作:将当前区间切为左右两个子区间,依次触发两个子区间的递归调用,本身不执行打印操作 - 当递归拆分到区间只剩一个元素时(即
first == last),触发终止条件的打印逻辑,输出当前唯一的元素
运行示例(以数组[1,2,3,4],首次调用displayArray(arr, 0, 3)为例)
- 第一层调用区间
[0,3]长度为4,拆分后先执行左子区间[0,1]的递归调用,再执行右子区间[2,3]的递归调用 - 左子区间
[0,1]长度为2,拆分后先执行[0,0]调用(打印1),再执行[1,1]调用(打印2) - 左子区间执行完成后,右子区间
[2,3]拆分后先执行[2,2]调用(打印3),再执行[3,3]调用(打印4)
最终输出结果为1 2 3 4 ,完成全数组打印。
内容的提问来源于stack exchange,提问作者Almamy
相关产品推荐
相关产品推荐

