рекурсия

Задача 8 урок 21 Вычисление арифметического выражение со скобками

Задача 8 урок 21

Напишите функцию, которая получает на вход произвольную строку вида: 5*(3+4)-7*9+3*(2+(2-7))(арифметическое выражение со скобками любого уровня вложенности и операциями умножения, вычитания и сложения) и в качестве ответа возвращает результат этого выражения. Рекомендация: сначала убедитесь, что число открывающих скобок, равно числу закрывающих.

#22 Рекурсия. Рекурсивные вызовы, функции и процедуры в Паскаль

Рекурсия вообще

Для начала скажем, что "рекурсия вообще" это явление в реальности, когда что-то повторяет само себя, причем обычно каким-то "вложенным" образом.

Рекурсия может быть "статической", как повторение формы целого в его частях, например так:
рекурсия картина

или так:
рекурсия форма

Задачи на Рекурсию (учебные, для начинающих) -- программирование

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

Для разминки

Для разминки изучите вот это решение привычной задачи.

Рекурсия -- что это в программировании

Рекурсия -- приём в программировании, когда некоторый модуль программы (фукция, метод) вызывают сами себя.
Такой вызов называет рекурсивным ("самовызов").

Конечность рекурсии

В ходе выполнение рекурсивный алгоритм всё время как бы "зарывается" всё глубже в уровни вызовов, чтобы этот процесс не был бесконечным (обычно бесконечная рекурсия означает ошибку в программе), следует четко понимать:

jquery Получить все вложенные элементы данного блока -- рекурсивно (потомки)

Используйте поиск с "произвольным" селектором (звездочкой -- т.е. соответствием чему угодно):

$('#id-of-an-element').find('*');

-- обратите внимание, что здесь для родителя необходим уникальный селектор (c id).

jquery Плагин -- рекурсивное получение родителя нужного уровня

Можно так (оформляем в виде плагина):

/**
 * Получает родиля указанноого уровня для данного элемента
 * 
 * @param {integer} n  уровень родителя (вверх по дереву DOM)
 *                     Например: уровень папы = 0, прадедушки = 2
 * @returns {type.fn.nthParent.$p}
 */
$.fn.nthParent = function(n){
	var $p = $(this);
	while ( n-- >= 0 )
	{
	  $p = $p.parent();
	}
	return $p;
};

Использовать так:

$('селектор').nthParent(1); // получаем блок "дедушки" данного блока (родитель родителя)
Subscribe to RSS - рекурсия