@limberg

Рекурсивный ввод-вывод последовательности без использования массивов и списоков?

Задача: организовать ввод-вывод последовательности n целых чисел, с применением рекурсии. Числа должны выводится с порядковыми номерами и в том же порядке, в каком производился их ввод. Использование массивов и списков не разрешается. Вывод должен происходить после окончания ввода.

Буду благодарен за подсказку, как можно подкорректировать эту функцию так, чтобы вывод был в прямом порядке, а не в обратном:
void RecursiveInput( int n, int index = 1 )
{
    if ( index <= n )
    {
        int value;
        cin >> value;

        RecursiveInput( n, index + 1 );

        cout << "Номер " << index << ": " << value << endl;
    }
}
  • Вопрос задан
  • 488 просмотров
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
в общем, закину свой вариант, который изложил в комментах. Просто оставлю это здесь.

Вышло даже немного проще, достаточно передавать только одну ссылку.
Нет массивов, и нет списков, аллоцированных в куче. Только одиночные стековые переменные.

кодъ на плюсахъ

#include <iostream>

struct Node {
    int value;
    Node *next;
};

void RecursiveOutput( Node* item )
{
    if ( item != 0 )
    {
        RecursiveOutput(item->next);
        std::cout << item->value << std::endl;
    }
}

void RecursiveInput( int n, int index = 1, Node* item = 0 )
{
    if ( index <= n )
    {
        Node data;
        std::cin >> data.value;
        data.next = item;

        RecursiveInput( n, index + 1, &data );
    } else {
        std::cout << "RecursiveOutput" << std::endl;
        RecursiveOutput(item);
    }
}

int DEPTH = 3;

int main()
{
    std::cout << "input values: "  << std::endl;
    
    RecursiveInput(DEPTH);
    
    std::cout << "end"  << std::endl;

    return 0;
}

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы