Так что у меня ошибка рекурсии.
OutPut я хочу...
Вход 4
* * * *
* * *
* *
*
* *
* * *
* * * *
OutPut я 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;
}
Может кто-нибудь указать на мою ошибку?
Как и при любой рекурсии, вам нужно определить две вещи:
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;
}
}