【发布时间】:2020-10-03 15:37:33
【问题描述】:
我们的任务是编写一个可以打印如下内容的递归:
* * * *
* * *
* *
*
*
* *
* * *
* * * *
我编写了代码并希望得到正确的图表。但相反,我得到了这个:
* * * *
*
* *
* * *
* * * *
我不知道为什么。我认为每次我的代码调用 printOppositeTriangles(n-1) 时,它都需要在调用下一个 printOppositeTriangles(n-1) 之前遍历包括 for 循环(带有 j 的循环)在内的所有内容。有人可以告诉我为什么吗?谢谢!
void printOpositeTriangles(int n){
using namespace std;
if (n==1){
cout<<"*"<<endl;
} else {
for (int j=1;j<=n;j++){
cout<<"*";
}
cout<<endl;
printTriangle(n-1);
for (int i=1;i<=n;i++){
cout<<"*";
}
cout<<endl;
}
}
【问题讨论】:
-
忘了说,我用 n = 4 尝试了我的代码。
-
您是否尝试在调试器中运行您的程序并逐行执行您的代码?
-
什么是
printTriangle,如果有的话,它与printOpositeTriangles有什么关系?你说“递归”,但printOpositeTriangles实际上并没有递归地调用自己。 -
@IgorTandetnik 好的,所以基本上在我的作业中,我应该编写一个名为 printTriangles 的递归函数和另一个名为 printOppositeTriangles 的递归函数,我打算再次调用 PrintOppositeTriangles 但这只是一个错字......所以基本上我花了半个小时,因为这个错字lololol而失败了。无论如何,非常感谢。现在问题解决了。
-
@regulus 你需要学习如何使用调试器。错字会发生,如果没有调试技能,您将无法找出问题所在。