C++ 在C+中打印对边三角形函数+;
我们的任务是编写一个递归,可以打印如下内容:C++ 在C+中打印对边三角形函数+;,c++,c++11,recursion,c++14,C++,C++11,Recursion,C++14,我们的任务是编写一个递归,可以打印如下内容: * * * * * * * * * * * * * * * * * * * * 我编写了代码,希望得到正确的图形。但我得到的却是: * * * * * * * * * * * * * * 我不明白为什么。我认为每次我的代码调用printObjectiveTriangles(n-1)时,它都需要在调用下一个printObjectiveTriangles(n-1)之前遍历包括for循环(带j的循环)在内的所有内容。有人能告诉我为什么吗?谢谢大家! v
* * * *
* * *
* *
*
*
* *
* * *
* * * *
我编写了代码,希望得到正确的图形。但我得到的却是:
* * * *
*
* *
* * *
* * * *
我不明白为什么。我认为每次我的代码调用printObjectiveTriangles(n-1)时,它都需要在调用下一个printObjectiveTriangles(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;
}
}
void printoposite三角形(int n){
使用名称空间std;
如果(n==1){
cout您的代码中有一个大问题:您需要在printAntiviteTriangles中进行递归调用。您调用的print triangle与函数名不同
这是递归的主要思想,在你的例子中没有
试试这个
void printLine(unsigned int n)
{
if (n == 1){
std::cout << "*" << std::endl;
}
else{
for (unsigned int j = 1; j <= n; j++){
std::cout << "*";
}
std::cout << '\n';
printLine(n - 1);
for (unsigned int j = 1; j <= n; j++){
std::cout << "*";
}
std::cout << '\n';
}
}
void打印行(无符号整数n)
{
如果(n==1){
std::cout忘了说,我用n=4试了我的代码。你试过在调试器中运行你的程序并逐行检查你的代码吗?什么是printTriangle
,如果它与printopSiteTriangles
有什么关系?你说的是“递归”,但是,printOpositeTriangles
实际上并不是递归地调用自己。@IgorTandetnik好的,所以基本上在我的家庭作业中,我应该写一个递归函数printTriangles,另一个函数printAbistiteTriangles,我打算再次调用printAbistiteTriangles,但那只是一个打字错误……所以基本上我花了很多时间一个小时,因为这个lololol错误而失败。无论如何,非常感谢。问题现在解决了。@regulus您需要学习如何使用调试器。会发生错误,没有调试器技能,您将无法找出错误所在。谢谢,我找到了答案。我本来打算调用函数本身,但不知何故它是一个错误。有什么办法让我知道吗是否可以将此问题标记为不再需要帮助?