0 / 0 / 0
Регистрация: 26.01.2021
Сообщений: 10
1

Рекурсия: Сколько раз будет вызвана рекурсивная ветвь

26.01.2021, 10:55. Показов 1559. Ответов 1

Author24 — интернет-сервис помощи студентам
Дана задача:
Lisp
1
2
3
4
5
(defun simtr (s1 s2)
(cond ((null s1) s2)
((null s2) s1)
((member (car s1) s2) (simtr (cdr s1) (remove (car s1) s2)))
(t (cons (car s1) (simtr (cdr s1) s2)))))

Сколько раз будет вызвана рекурсивная ветвь, если в качестве s1 и s2 задать:
a) nil, (a);
b) (a), (a b);
c) (a b c), (c b d) ?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2021, 10:55
Ответы с готовыми решениями:

Посчитать, сколько раз будет вызвана рекурсивная функция, если ей будет передан заданный аргумент
int foo(int n) { if (n <= 0) return 1; return foo((n * 2) / 3) + foo(n - 2);...

Рекурсия. Надо реализовать счетчик, который считал бы сколько раз вызвана процедура с первыми параметрами
Есть рекурсивная процедура, которая вызывает себя дважды с разными параметрами. Надо реализовать...

Рекурсивная програма которая по очереди будет выводить 1(16 раз), 2(8 раз), 3 (4 раза)
подробнее смотрите вложение

Для каждого набора исходных данных определить: сколько раз будет выполнен цикл и что будет напечатано на экране
Помогите решить: 4)Для каждого набора исходных данных определить: сколько раз будет выполнен...

1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,607
Записей в блоге: 13
26.01.2021, 11:34 2
Лучший ответ Сообщение было отмечено Vera99 как решение

Решение

a) - 0 (исходный вызов сразу вернет управление)
b) - 1
c) - 3

Что легко проверить, включив трассировку:

Lisp
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
28
29
30
31
32
33
34
35
36
37
(defun simtr (s1 s2)
   (cond ((null s1) s2)
            ((null s2) s1)
            ((member (car s1) s2) (simtr (cdr s1) (remove (car s1) s2)))
            (t (cons (car s1) (simtr (cdr s1) s2)))))
 
(trace simtr)
 
 
(simtr nil '(a))
 
Вход в функцию simtr Аргументы: NIL (A)
Возврат из функции simtr Результат: (A)
 
==> (A)
 
(simtr '(a) '(a b))
 
Вход в функцию simtr Аргументы: (A) (A B)
  Вход в функцию simtr Аргументы: NIL (B)
  Возврат из функции simtr Результат: (B)
Возврат из функции simtr Результат: (B)
 
==> (B)
 
(simtr '(a b c) '(c d b))
 
Вход в функцию simtr Аргументы: (A B C) (C D B)
  Вход в функцию simtr Аргументы: (B C) (C D B)
    Вход в функцию simtr Аргументы: (C) (C D)
      Вход в функцию simtr Аргументы: NIL (D)
      Возврат из функции simtr Результат: (D)
    Возврат из функции simtr Результат: (D)
  Возврат из функции simtr Результат: (D)
Возврат из функции simtr Результат: (A D)
 
==> (A D)
1
26.01.2021, 11:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2021, 11:34
Помогаю со студенческими работами здесь

Почему рекурсия вызвана не правильно?
#include <iostream> using namespace std; void sort (int a, int arraySize, int Index, int...

Рекурсия: узнать, сколько раз выполнится процедура
Здравствуйте. Такой вопрос к Вам, есть рекурсивная процедура такого вида procedure Tree( ...

Рекурсия: определить, сколько раз в последовательности меняется знак
Дана непустая последовательность ненулевых целых чисел, за которой следует 0. Определить, сколько...

Рекурсия: определить, сколько раз каждый символ встречается в списке
Для заданного списка А функция образует список из чисел сколько раз каждый символ встречается в...

Рекурсия: посчитать, сколько раз встречается заданная буква в массиве
Создайте рекурсивную функцию, которая будет принимать вот такие аргументы: слово чаровый массив,...

Определить, сколько раз будет выведено X и Y
for i:=1 to 5 do for j:= to 7 do writeln(X); writeln(Y); _____________________ второй случай...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru