java递归打印
我在Java中使用递归,输出应该如下java递归打印,java,recursion,Java,Recursion,我在Java中使用递归,输出应该如下 ### ##* #** *** 我现在就是这样做的: public void recursion(int n){ if (n==0) { return; } else { System.out.print(number_pound(n)); System.out.println(); recursion(n-1); System.out.print(s
###
##*
#**
***
我现在就是这样做的:
public void recursion(int n){
if (n==0) {
return;
}
else {
System.out.print(number_pound(n));
System.out.println();
recursion(n-1);
System.out.print(stars(n));
System.out.println();
}
}
private String number_pound(int level) {
String s = "";
for(int i=0;i<level;i++)
s+="#";
return s;
}
private String stars(int level) {
String s = "";
for (int i = 0; i < level; i++)
s+= "*";
return s;
}
public static void main(String[] args) {
recursion rec = new recursion();
rec.recursion(3);
}
我知道我的代码的问题是我使用System.out.println()来分隔两个部分,但是如果没有printline语句,数字pound将被卡在同一行中。我相信这将完成您正在尝试的操作。它将打印磅数,然后是星星数,然后是新行。 由于需要指定输出字符串的长度,因此必须传递额外的长度参数。我相信没有长度是不行的
public void recursion(int n, int length){
if (n<0) {
return;
}
else {
System.out.print(number_pound(n));
System.out.print(stars(length - n));
System.out.println();
recursion(n-1, length);
}
}
公共无效递归(int n,int length){
如果(n你错过了几件事:
- 您首先要打印磅,然后开始,然后是新行,然后重复此过程
- 每行上打印的星星数实际上是“通过级别的初始数字”
- 在
recursion()中需要这两个数字
- 即使
n
为0
,也要重复此过程
应该是这样的:
public void recursion(int max, int n){
if (n<0) {
return;
}
else {
System.out.print(number_pound(n));
System.out.print(stars(max - n));
System.out.println();
recursion(max, n-1);
}
}
private String number_pound(int level) {
String s = "";
for(int i=0;i<level;i++)
s+="#";
return s;
}
private String stars(int level) {
String s = "";
for (int i = 0; i <level; i++)
s+= "*";
return s;
}
public static void main(String[] args) {
recursion rec = new recursion();
rec.recursion(3, 3);
}
公共无效递归(int max,int n){
if(n公共类递归{
int k;
公共无效递归(int n){
如果(k==0){
k=n;
}
如果(nA变量length
应表示最大数(在您的情况下为3)。您只需继续显示n
#s和length-n
星,直到n变为小于0为止
public void recursion(int n, int length){
if(n>=0){
System.out.print(number_pound(n));
System.out.print(stars(length - n)+"\n");
recursion(n-1, length);
}
}
调用recursion(3,3)
以获得输出。如果希望recursion()方法的签名仅为(int n)
,则可以在调用recursion()之前,使用全局静态变量引用在主方法中为其分配最大数的最大数
显然,长度可以是任意整数0或更大。迭代执行的所有操作都可以通过递归完成。递归调用缺少第二个参数。类名不能与成员方法相同:递归。
public class recursion {
int k;
public void recursion(int n){
if(k==0){
k=n;
}
if (n<0) {
return;
}
else {
System.out.print(number_pound(n)+stars(k-n));
System.out.println();
recursion(n-1);
}
}
private String number_pound(int level) {
String s = "";
for(int i=0;i<level;i++)
s+="#";
return s;
}
private String stars(int level) {
String s = "";
for (int i = 0; i < level; i++)
s+= "*";
return s;
}
public static void main(String[] args) {
recursion rec = new recursion();
rec.recursion(3);
}
public void recursion(int n, int length){
if(n>=0){
System.out.print(number_pound(n));
System.out.print(stars(length - n)+"\n");
recursion(n-1, length);
}
}
int length = 3;
private List<String> newList(String x, int length) {
return Arrays.asList(new String[length]).stream().map(s -> x)
.collect(Collectors.toList());
}
private void recurSymbol(String x, String y, int length) {
List<String> list = newList(x, length);
list.addAll(newList(y, this.length - length));
System.out.println(String.join("", list));
if(length > 0) recurSymbol(x, y, length - 1);
}
public void recursion(String x, String y) {
recurSymbol(x, y, length);
}
recursion("#", "*");