下面是递归调用自身的时候,究竟需要传递什么参数。前面已经分析过,我们在这道题中要一步步像剥洋葱一样地剥开这个数组,而且我们注意到程序中最后三条语句是 a[0] 跟a[k-1] 在相互交换,因此这里的 a[0] 必定是原来数组不断往后移动得来的,也就是说第一个参数应该是 a+1 ,这样,每次递归调用的时候 a[0] 就会依次往后移动。
从程序中可以看出,当最终从返回条件退出递归时要交换的是 a[0] 和a[k-1] ,因此这里的k就应该是子序列的长度(也就是每一次“剥洋葱”之后的长度),显然,每“剥”一次“洋葱”序列的长度就减2(序列头和序列尾除去),所以第二个参数应该每次减2,即k-2,所以答案是:
--------------------------------------------------------------------------------