为什么我的 C++ 递归程序永远运行
Why my C++ Recursion Program keeps on forever
我正在编写一个倒金字塔控制台应用程序,当您输入一个数字时,例如 3,它会输出它和楼梯的数量,
*****
***
*
它可以工作,一切都很好,但是当它输出金字塔时。它会一直发送垃圾邮件空间,直到程序崩溃。这是源代码:
注意:这是一个递归项目。
#include <iostream>
using namespace std;
int Pyramid(int n, int index)
{
if(index > n) //Base Case
{
return 0;
}
for(int i=index+1; i<=n; i++)
{
cout<<" ";
}
for(int j=1; j<index*2; j++)
{
cout<<"*";
}
cout<<endl;
return Pyramid(n, index-1);
}
int main()
{
int n;
cin>>n;
Pyramid(n, n);
return 0;
}
任何人都可以帮我解决这个问题并将其保留为递归项目吗?
你递归的停止条件是错误的。
这是我所做的,它正确显示了星形金字塔
int Pyramid(int n, int index)
{
// your stop condition is wrong (not index>n but index ==0)
if (index ==0 )
{
return 0;
}
//until here
for(int i=index+1; i<=n; i++)
{
cout<<" ";
}
for(int j=1; j<index*2; j++)
{
cout<<"*";
}
cout<<endl;
return Pyramid(n, index-1);
}
示例执行如下:
10
*******************
*****************
***************
*************
***********
*********
*******
*****
***
*
if(index > n) //Base Case
{
return 0;
}
这似乎不正确。您以 n
开始索引,索引将始终递减。 index > n
永远达不到。
我正在编写一个倒金字塔控制台应用程序,当您输入一个数字时,例如 3,它会输出它和楼梯的数量,
*****
***
*
它可以工作,一切都很好,但是当它输出金字塔时。它会一直发送垃圾邮件空间,直到程序崩溃。这是源代码: 注意:这是一个递归项目。
#include <iostream>
using namespace std;
int Pyramid(int n, int index)
{
if(index > n) //Base Case
{
return 0;
}
for(int i=index+1; i<=n; i++)
{
cout<<" ";
}
for(int j=1; j<index*2; j++)
{
cout<<"*";
}
cout<<endl;
return Pyramid(n, index-1);
}
int main()
{
int n;
cin>>n;
Pyramid(n, n);
return 0;
}
任何人都可以帮我解决这个问题并将其保留为递归项目吗?
你递归的停止条件是错误的。 这是我所做的,它正确显示了星形金字塔
int Pyramid(int n, int index)
{
// your stop condition is wrong (not index>n but index ==0)
if (index ==0 )
{
return 0;
}
//until here
for(int i=index+1; i<=n; i++)
{
cout<<" ";
}
for(int j=1; j<index*2; j++)
{
cout<<"*";
}
cout<<endl;
return Pyramid(n, index-1);
}
示例执行如下:
10
*******************
*****************
***************
*************
***********
*********
*******
*****
***
*
if(index > n) //Base Case
{
return 0;
}
这似乎不正确。您以 n
开始索引,索引将始终递减。 index > n
永远达不到。