下面的代码递归地将x减去1,直到它等于y。它打印一个表示递归过程的字符串。我不希望在字符串中打印x的起始值。
private static String createPath(int x, int y, String path) {
if (x > y) {
path += "(" + (x-1) + "," + y + ") ";
return createPath(x - 1, y, path);
}
else
return path += "(" + x + "," + y + ") ";
}当我输入如下内容时:
System.out.println(createPath(5, 1, ""));我得到以下输出:
(4,1) (3,1) (2,1) (1,1) (1,1) 为什么最后的值(1,1)被打印了两次?我注意到当我从(x-1)中删除(x-1)时
path += "(" + (x-1) + "," + y + ") ";输出变为:
(5,1) (4,1) (3,1) (2,1) (1,1)但同样,我不希望在字符串中打印(5,1)。此外,我也看过Why is my recursive loop printing the last value twice at the end?,但它似乎对我没有帮助。
发布于 2020-11-01 04:16:08
很简单,因为当x==2和y==1条件x>y为true时,"(" + (x-1) + "," + y + ") "返回(1,1)
https://stackoverflow.com/questions/64625881
复制相似问题