我正在尝试编写一个给定自然数n的程序,打印出可以在here中找到的模式。到目前为止,它仅适用于n = 2。
我认为我最大的问题是识别何时应该调用递归函数。
编码:
void print_line(int n) { // draw a line with n asterisks
if (n == 0) return;
for (int i = n; i > 0; i--) {
cout << "*";
}
cout << endl;
}
void print_bars(int n) { // draw the pattern
if (n == 0) return;
print_line(n);
print_bars(n - 1);
for (int i = n - 1; i > 0; i--) {
print_bars(i);
}
}
我希望提示比简单的答案更好。谢谢。
最佳答案
如果我正确地理解了该练习(以我认为的糟糕方式提出),则应该在实际代码之前重新考虑算法。每个步骤都可以看作是上一步,再加上一块,在这种情况下,它位于最上面,这使一切变得容易得多。首先,忘记代码并从抽象的 Angular 解决它。提示:您犯的大错误对应于第二个循环的增量部分。
完成后,请重新编码。您可以简单地调整一两行代码,但是由于这是一项学习 Activity ,因此我建议您使用递归,这通常会更有效。