编写一个接受整数参数n的方法writeChars,并按如下方式输出n个字符。输出的中间字符应始终为星号(“*”)。如果要求您写出偶数个字符,则中间会有两个星号(“**”)。在星号之前,你应该写出少于字符(“<”)。在星号后,您应该写出大于字符(“>”)。
我设法解决了这个问题,但是不太明白一个陈述:
public void writeChars(int n) {
if ( n < 1 ) {
throw new IllegalArgumentException();
}
if( n == 1 ){
System.out.print("*");
return;
}
if ( n == 2 ) {
System.out.print("**");
return;
}
System.out.print("<");
writeChars(n-2);
System.out.print(">");
}
为什么是递归案例:
writeChars(n-2);
N-2?而不是n-1?
答案 0 :(得分:0)
对于每个递归调用,代码正在打印两个输出。因此,对于每次迭代,数量应减少2。
如果你写n-1
那么它打印的字符数就会翻倍。因此我们必须写,n-2
递归语句之前的一个print语句和之后的一个print语句。