Прямая и косвенная проблема рекурсии

0

Так что у меня ошибка рекурсии.

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;
}

Может кто-нибудь указать на мою ошибку?

  • 0
    Вам не нужно писать каждое слово с заглавной буквы :)
Теги:
recursion

1 ответ

0
Лучший ответ

Как и при любой рекурсии, вам нужно определить две вещи:

  1. Конечное условие
  2. Значение 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;
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню