再java中 递归算法使用的是栈来存储的
运行结果
面向结果编程:
对于前三个a,是func(array,lo,mid) 在一直操作(类似深度优先),直到 满足退出条件 之后执行func(array,lo,mid)第三次入栈的 func(array,mid+1,hi)(类似回溯),因为第三次入栈后, 原数组已经被切分为最小单元 , 不能再进行切分了, 所以 第二个 func(array,mid+1,hi)也不能进行切分,所以直接进行归并操作, c++,d++.归并操作执行完之后,再进行回溯,回到第二层,依次执行, 直到回溯到 第一层进行第一次切分后右部的归并操作。