我需要创建一个递归方法,它将int x作为唯一的参数,然后打印“*”x次,然后打印“!” x次。通常这很容易,但我们不能使用任何循环或除x之外的任何变量。
我尝试了什么(编辑):
public void xPrint(int x) {
if (x == 0) return;
System.out.print("*");
xPrint(x-1);
System.out.print("!");
xPrint(x-1);
}
我想让递归重新开始,但我不知道如何。
编辑2:问题解决了。我没有意识到递归调用行之后的行仍然会被执行,所以我认为它会做星星然后停止并且必须重新启动或者做其他事情。我只需要取出最后一行。
答案 0 :(得分:1)
试试这个:
public void xPrint(int x) {
if (x > 0) {
System.out.print("*");
xPrint(x-1);
System.out.print("!");
}
}
以下是它的工作原理:
x > 0
,则我们打印一个*
并将递归递减x
一个单位x <= 0
,则表示我们必须停止并开始返回!
请注意,问题中的代码几乎正确。唯一的问题是最后一次调用xPrint(x-1);
是不必要的 - 如果删除它,它就会起作用!