这周我的在线CS1课程的任务是创建一个程序,该程序使用多种方法来打印反向三角形。我创建了教授概述的方法,但发现自己完全陷入了以相反顺序打印递归的问题。起初,我根本无法掌握递归。似乎For循环可以用更少的抽象来完成相同的工作。在对该主题进行了更多的阅读之后,我觉得我对它是如何工作的有了更好的理解,不一定是为什么使用它。这就是我现在所拥有的:
public class RecursiveTriangle {
public static void main(String[] args) {
int sideLength = getLength();
String trianglePattern = getPattern();
printTriangle(sideLength,trianglePattern);
}
public static int getLength ()
{
Scanner scr = new Scanner(System.in);
System.out.print("Enter a number: ");
int sideLength = scr.nextInt();
return sideLength;
}
public static String getPattern()
{
Scanner scr = new Scanner(System.in);
System.out.print("Enter a character: ");
String trianglePattern = scr.nextLine();
return trianglePattern;
}
public static void printTriangle(int sideLength,String trianglePattern)
{
if (sideLength < 1){return;}
printTriangle(sideLength - 1,trianglePattern);
for (int i = 0; i < sideLength; i++)
{
System.out.print(trianglePattern);
}
System.out.println();
}
}
当前迭代以“正常”顺序打印出三角形。输入int(5)和String(“ AA”)会得出:
A
AA
AAA
AAAA
AAAAA
程序的最终迭代应为:
AAAAA
AAAA
AAA
AA
A
在这里,我将提供一些帮助。乐于阅读/观看有关递归的推荐材料,到目前为止,这是我发现的第一个具有挑战性的概念。