【发布时间】:2012-02-26 23:02:23
【问题描述】:
所以我有一个程序,其中(使用递归)我应该接受用户输入(int)并根据数字绘制一个向后然后向前的三角形......例如下面
用户输入:4 (忽略每个之间的多余空格,之间不应有多余的行)结果:
XXXX
XXX
XX
X
X
XX
XXX
XXXX
我创建了一个我认为应该这样做的方法,但我遇到了问题
这是我目前的代码
n 是输入数字 z 是一个计数器,试图在制作一个向后/向前的三角形之间切换
public static String drawLine(int n, int z){
if(n!=0&& z<(n+1)){
for(int i=1;i<=n;i++)
System.out.print("X");
System.out.println();
z+=1;
drawLine(n-1,z);
return"";
}
else{
if( z==(2*n+1) ) return "";
z+=1;
String p = drawLine(n - 1,z);
p = p + "X";
System.out.println(p);
return p; }
}
错误信息是有一些无限循环或溢出,但我找不到错误....请帮助!!
【问题讨论】:
-
您希望您的程序返回该字符串还是打印该字符串?如果您选择并坚持一个,那会容易得多。
-
多么糟糕的递归教学示例......叹息。
-
@JimGarrison 实际上,有一种优雅的递归方式可以做到这一点。但是,没有人发布它。
-
@Taymon 可能是这样,但递归也是斐波那契的“优雅”解决方案,从软件工程的角度来看是完全错误的。