所以我有一个递归错误。
OutPut I Want ...
输入4
* * * *
* * *
* *
*
* *
* * *
* * * *
OutPut I Get ..
输入4
*大空格*
我似乎不能很好地绕过我的脑袋递归。
#include<iostream>
#include<fstream>
#include<string>
#include<windows.h>
#include<ctime>
using namespace std;
int i;
bool end = false;
int changer = -1;
int placeHolder;
bool recursionUp(int num1)
{
if(num1 == placeHolder)
{
return true;
}
for(i = placeHolder; i == num1; i--)
{
cout << "*";
}
cout << "\n";
recursionUp(num1 + 1);
}
bool cont = false;
int recursion(int num1)
{
if(num1 == 0)
{
cont = recursionUp(num1);
}
for(i = 1; i <= num1; i++)
{
cout << "*";
}
recursion(num1 - 1);
if(cont)
{
return 0;
}
}
int main()
{
int number;
cout << "Input Star Number...\n";
cout << "\t Input: ";
cin >> number;
placeHolder = number;
recursion(number);
return 0;
}
有人可以指出我的错误吗?
答案 0 :(得分:0)
与任何递归一样,您需要定义两件事:
depth
值(以及需要的任何其他信息)在您的情况下,结束条件是depth == number - 1
您希望在每次递归之前和之后打印。
void recursion(int depth){
if (depth <= 1) {
cout << '*' << endl << endl;
}else{
for (int i = 0; i < depth; ++i)cout << "* ";
cout << endl << endl;
recursion(depth - 1);
for (int i = 0; i < depth; ++i)cout <<"* ";
cout << endl << endl;
}
}