Вход   →
Задание 11

Рекурсивные алгоритмы

За правильное выполненное задание получишь 1 балл. На решение отводится примерно 5 минут.

 

Для выполнения задания 11 по информатике необходимо знать:

Рекурсия – это приём, позволяющий свести исходную задачу к одной или нескольким более простым задачам того же типа.

Чтобы определить рекурсию, нужно задать:

  1. условие остановки рекурсии (базовый случай или несколько базовых случаев)
  2. рекуррентную формулу 

 

Любую рекурсивную процедуру можно запрограммировать с помощью цикла

 

Рекурсия позволяет заменить цикл и в некоторых сложных задачах делает решение более понятным, хотя часто менее эффективным

Задачи для тренировки

  1.    Ниже на пяти языках программирования записан рекурсивный алгоритм F.

     

    Бейсик Python
    DECLARE SUB F(n)
    SUB F(n)
        IF n > 0 THEN
            PRINT n
            F(n - 3)
            F(n \ 3)
        END IF
    END SUB
    def F(n):
        if n > 0:
            print(n)
            F(n - 3)
            F(n // 3)
    Паскаль Алгоритмический язык
    procedure F(n: integer);
    begin
        if n > 0 then begin
            writeln(n);
            F(n - 3);
            F(n div 3)
        end
    end;
    алг F(цел n)
    нач
        если n > 0 то
            вывод n, нс
            F(n - 3)
            F(div(n, 3))
        все
    кон
    Си++
    void F(int n) {
        if (n > 0) {
            std: :cout << n
            F(n - 3);
            F(n / 3);
        }
    }

     

    Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(9). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

    Ответ
    Проверить

    Решение
    Авторизуйтесь, чтобы увидеть решение.
  2.    Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++
     procedure F(n: integer);
     begin
       writeln('#');
       if n > 0 then begin
            F(n - 4); 
            F(n - 2);
      writeln('#'); 
      end
     end;
     
     void F(int n)                
     {
      std::cout <<"#";
      if (n > 0) {
        F(n-4);
        F(n - 2);
        std::cout <<"#";
      }
     }
     

     Сколько символов «решётка» будет напечатано на экране при выполнении вызова F(11)?

    Ответ
    Проверить
  3.    Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++
     procedure F(n: integer);
     begin
       writeln('#');
       if n <= 6 then begin
            writeln('+'); 
            F(n+2); 
             F(n+6);
             F(n+1);
      end
       end;
     
     void F(int n)                
     {
      std::cout <<"#";
      if (n <= 6) {
        std::cout <<"+";
         F(n+2);
         F(n+6);
         F(n+1);
      }
         }
     

     Сколько символов «решётка» будет напечатано на экране при выполнении вызова F(0)?

    Ответ
    Проверить
  4.    Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++
     procedure F(n: integer);
     begin
       writeln(n);
       if n > 0 then begin
             F(n - 2); 
             F(n - 2);
             F(n - 2);
      end
       end;
     
     void F(int n)                
     {
      std::cout << n;
      if (n > 0) {
         F(n - 2);
         F(n - 2);
         F(n -2 );
      }
         }
     

    Найдите сумму чисел, которые будут выведены при вызове F(5).

    Ответ
    Проверить
  5.    Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++

     procedure F(n: integer);
     begin
       writeln('#');
       if n > 0 then begin
            F(n - 5); 
            F(n-2);
            F(n div 3); 
      end
     end;

     void F(int n)                
     {
      std::cout <<"#";
      if (n > 0) {
           F(n-5);
           F(n - 2);
           F(n/3); 
      }
     }

     Сколько символов «решётка» будет напечатано на экране при выполнении вызова F(6)?

    Ответ
    Проверить
  6.    Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++

     procedure F(n: integer);
     begin
       writeln('#');
       if n < 6 then begin
            F(n+3); 
            writeln('#');
            F(n+2); 
      end
     end;

     void F(int n)                
     {
      std::cout <<"#";
      if (n < 6) {
           F(n+3);
           std::cout <<"#";
           F(n+2); 
      }
     }

     Сколько символов «решётка» будет напечатано на экране при выполнении вызова F(1)?

    Ответ
    Проверить
  7.    Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++
     procedure F(n: integer);
     begin
       writeln('#');
       if n <= 6 then begin
            writeln('#'); 
            F(n+2); 
             F(n+6);
             F(n+1);
      end
       end;
     
     void F(int n)                
     {
      std::cout <<"#";
      if (n <= 6) {
        std::cout <<"#";
         F(n+2);
         F(n+6);
         F(n+1);
      }
         }
     

     Сколько символов «решётка» будет напечатано на экране при выполнении вызова F(-1)?

    Ответ
    Проверить
  8.    Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++
     procedure F(n: integer);
     begin
       writeln(n);
       if n > 0 then begin
            F(n - 4); 
            F(n / 2); 
      end
     end;
     void F(int n)                
     {
      std::cout << n;
      if (n > 0) {
        F(n-4);
        F(n / 2);
      }
     }

    Найдите сумму чисел, которые будут выведены при вызове  F(13)?

    Ответ
    Проверить
  9.    Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++
     procedure F(n: integer);
     begin
       writeln(n);
       if n < 9 then begin
            F(n * 2); 
            F(n + 5); 
           writeln(n);
    end
     end;
     void F(int n)                
     {
      std::cout << n;
      if (n < 9) {
        F(n * 2);
        F(n + 5);
        std::cout << n;
      }
     }

    Найдите сумму чисел, которые будут выведены при вызове  F(1)?

    Ответ
    Проверить
  10.    Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++
     procedure F(n: integer);
     begin
        writeln(n); 
       if n > 0 then begin
             writeln(n); 
             F(n - 4); 
             F(n - 2);
             F(n - 1);
      end
       end;
     
     void F(int n)                
     {
       std::cout << n;
      if (n > 0) {
         std::cout << n;
         F(n - 4);
         F(n - 2);
         F(n - 1);
      }
         }
     

    Найдите сумму чисел, которые будут выведены при вызове F(11) ?

    Ответ
    Проверить
  11. Ниже на 2 языках программирования записан рекурсивный алгоритм F:

    Паскаль  С++
     procedure F(n: integer);
     begin
       writeln('#');
       if n > 0 then begin
            F(n - 3); 
            F(n div 3); 
            F(n div 2); 
      end
     end;
     void F(int n)                
     {
      std::cout << "#";
      if (n > 0) {
        F(n-3);
        F(n/3);
        F(n / 2);
      }
     }

     Сколько символов «решётка» будет напечатано на экране при выполнении вызова F(5)?

    Ответ
    Проверить
Пройти тест
Задание 1. Системы счисления и операции над числами в разных системах счисления Задание 2. Построение и анализ таблиц истинности логических выражений Задание 3. Анализ информационных моделей (таблицы, диаграммы, графики) Задание 4. Поиск информации в базах данных. Файловая система Задание 5. Кодирование и декодирование информации Задание 6. Выполнение, анализ и поиск алгоритмов Задание 7. Электронные таблицы, диаграммы и графики Задание 8. Анализ программ Задание 9. Кодирование и декодирование информации. Передача информации Задание 10. Перебор слов и системы счисления Задание 11. Рекурсивные алгоритмы Задание 12. Компьютерные сети. Адресация в Интернете Задание 13. Вычисление количества информации Задание 14. Выполнение алгоритмов для исполнителя Задание 15. Графы. Поиск количества путей Задание 16. Кодирование чисел. Системы счисления Задание 17. Составление запросов для поисковых систем с использованием логических выражений Задание 18. Преобразование логических выражений Задание 19. Работа с массивами и матрицами в языке программирования Задание 20. Анализ программы, содержащей циклы и ветвления Задание 21. Анализ программы с подпрограммами Задание 22. Оператор присваивания и ветвления. Перебор вариантов Задание 23. Логические уравнения Задание 24. Поиск и исправление ошибок в программе Задание 25. Алгоритмы обработки массивов Задание 26. Выигрышная стратегия Задание 27. Обработка символьных строк, массивов и последовательностей

Еще нет аккаунта?

Пользователям Бингоскул доступна бесплатная подготовка к ЕГЭ по всем видам ФИПИ, просмотр решений и отслеживание статистики
Регистрация

Уже зарегистрированы?

Авторизуйтесь в своей учетной записи, чтобы получить доступ к расширенным возможностям функционала сайта
Вход

Вход в систему

Регистрация

Регистрируясь, я подтверждаю своё согласие с условиями пользовательского соглашения

Активация аккаунта

Спасибо за регистрацию
Мы отправили письмо на указанный электронный адрес.
Чтобы завершить регистрацию, проверьте почтовый ящик и перейдите по ссылке в письме.