是否可以打印字符串“x”次?
例如,如果给定字符串
String q = "*";
假设用户输入数字“4”表示他们希望字符串重复的次数。
该程序将打印:
****
你可以像这样使用递归
private void printStar(int n){
if(n > 0){
System.out.print("*");
printStar(n-1);
}
}
并最初调用这样的方法 -printStar(4);
您可以使用char[]
给定长度的数组来构建 a String
,然后将每个字符替换为*
:
String repeatedStar = new String(new char[4]).replace('\0', '*');
好吧,那将在内部使用循环。
从Apache commons common-lang中,使用StringUtils.repeat
:
System.out.println(StringUtils.repeat(q,4));
虽然它可能在内部循环,但您可以Strings
在用户代码中使用 Guava 的避免循环:
System.out.println(Strings.repeat("*", 4));
在递归中
printStar(int x)
{
if(x > 0)
{
System.out.print("*");
printStar(x-1);
}
}
我知道重点可能是使用递归,但在这种情况下递归是一个可怕的解决方案。这是一个更有效的解决方案(尽管它很可能使用循环Arrays.fill
!)
public static void printNX(int n)
{
char[] c = new char[n];
Arrays.fill(c, 'x');
System.out.println(new String(c));
}
当然,有可能Arrays.fill
调用本地代码,这些代码经过优化,可以使用有效的指令来填充数组并避免循环。但你永远不知道。
我不一定同意使用递归“不是循环”;所有这一切都是在颠簸堆栈;CPU 在技术上仍将通过不断跳回到递归函数的顶部来循环。