【发布时间】:2011-09-28 05:14:09
【问题描述】:
数组是一个字符串数组。数组为{"hello", "how", "are", "you", "?"}
它有点工作,但输出混合了最后两个元素,当我运行我的程序时,输出为you ? are how hello,它应该是? you are how hello。
我输入了一个打印语句来查看我的左右是什么以及它们是否切换,但这并没有帮助,因为它们只打印了起始值而没有其他任何内容。
为什么打印错误?不是在做递归吗?
这是我的方法。必须分而治之。
public void outrev() {
outrev(0, a.length - 1);
}
private void outrev(int left, int right) {
System.out.println("left a[" + left + "] is " + a[left]);
System.out.println("right a[" + right + "] is " + a[right]);
int mid;
if (left > right) {
//do nothing
}
else if (left == right) {
System.out.print(a[left]);
}
else {
mid = (left + right) / 2;
outm(mid + 1, right);
System.out.print(a[mid] + " ");
outm(left, mid - 1);
}
}
【问题讨论】:
-
首先,递归在哪里?还有,
outm的定义是什么? -
recusion 是两个 outm( ) 的,对吧? outm 的定义是什么意思?
-
按定义,我的意思是
outm的函数/方法定义是什么?不应该是outrev吗? -
正如@Sandeep 所说,递归伙伴在哪里。outm() 是什么
-
@alexthefourth 如果将
outm替换为outrev,那么我认为这段代码是正确的。请在获取输出时remark前两个 println 语句。否则程序会给出正确的输出。
标签: java arrays string recursion