powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Что такое рекурсия, есть ли доходчивая инфа?
25 сообщений из 81, страница 3 из 4
Что такое рекурсия, есть ли доходчивая инфа?
    #36541781
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VowkКак справедливо тут говорилось, любой алгоритм можно записать как в рекурсивной, так и в итерационной форме. Рекурсивная форма получается меньше, но для понимания как бы сложнее.
Это фейк? Вы ТРАНСФОРМИРОВАЛИ рекурсивный алгоритм перестановок или взяли ДРУГОЙ ИТЕРАЦИОННЫЙ алгоритм. Я знаю такой существует. И он действительно проще для понимания чем метод с рекурсией.

(Я код не смотрел.)
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36542287
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonVowkКак справедливо тут говорилось, любой алгоритм можно записать как в рекурсивной, так и в итерационной форме. Рекурсивная форма получается меньше, но для понимания как бы сложнее.
Это фейк? Вы ТРАНСФОРМИРОВАЛИ рекурсивный алгоритм перестановок или взяли ДРУГОЙ ИТЕРАЦИОННЫЙ алгоритм. Я знаю такой существует. И он действительно проще для понимания чем метод с рекурсией.
(Я код не смотрел.)
Что сказать хотел?
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36542395
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VowkЧто сказать хотел?
Обычно так не бывает. Рекурсивный алгоритм который занимает N строк исходного кода обычно (как правило) после трансформации его в плоский (НЕРЕКУРСИВНЫЙ) с использованием доп. структур данных типа стек, очередь, дек, может занимать более чем N строк. И это не свойство рекурсий а свойство самих языков программирования. Callback выглядит компактнее.

Если у тебя это не так, значит исходный алгоритм изначально НЕ БЫЛ рекурсивным.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36542591
Альмалексия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нафлудили 3 страницы, а толку? Автор такие глупые вопросы задаёт. Ему отвечают, а он опять спрашивает. Не дозрел человек значит.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36542811
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Как то писал 8 ферзей на GW Basic, ваще мрак
на клиппере. без рекурсии будет черт-те что
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
static pos[ 8 ],nr:= 1 
func main; return f8( 8 , 1 )
func f8(n,y)
  return if(n< 1 ,out(),if(y> 8 ,.f.,if(f1(y, 8 -n+ 1 ) .and. f8(n- 1 , 1 ),.t.,f8(n,y+ 1 ))))
func f1(y,x)
  local i
  for i= 1  to x- 1 
    if pos[i]=y .or. abs(y-pos[i])=abs(x-i); return .f.; end
  end
  pos[x]=y
  return .t.
func out
  local i,j
  ?nr++; ?''
  for i= 1  to  8 ; for j= 1  to  8 ; ??if(pos[j]=i,'X ','. '); end; ?''; end
  return .f.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36545243
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модераторы, куда дели рекурсивный герб России ?

Модератор: В корзину.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36545450
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv wrote:

> Модераторы, куда дели рекурсивный герб России ?
>
> *Модератор:* В корзину.

А с чего ?
Такое классное объяснение рекурсии ...
В чем проблема ?
Posted via ActualForum NNTP Server 1.4

Модератор: Объяснение классное, выбор картинки - не очень. Просто постарайтесь объяснять без использования официальных символов государства. На всякий случай :)
Спасибо за понимание.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36546128
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv wrote:

> *Модератор:* Объяснение классное, выбор картинки - не очень. Просто
> постарайтесь объяснять без использования официальных символов
> государства. На всякий случай :)
> Спасибо за понимание.

Не понимаю.

Вот из правил:


Публикация изображений.

Максимальный размер изображения, публикуемого с помощью кода img, должен
составлять не более 100 кб. Опубликованное изображение не должно носить
оскорбляющий характер.



Где написано, что нельзя использовать официальные символы государства ?

В чём вообще проблема, я не понимаю ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36546825
Bananas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АльмалексияАвтор такие глупые вопросы задаёт. Ему отвечают, а он опять спрашивает. Не дозрел человек значит.
Так ведь поэтому и задаю. Если человеку объяснить и он сразу поймет -- это значит только, что у него очень быстрый процесс "созревания", поэтому глупых вопросов либо 1-2, либо нет вообще.
По теме -- изначально сидело убеждение, что рекурсия применяется только к определенно структурированной информации. Особенно из-за примеров с картинками, стишком и зеркалами так думал. Теперь понял, что плясать нужно от задачи. Вчера как раз в тему про фракталы фильм смотрел. Тот же самый принцип: нахождение шаблона. В рекурсии -- одинаковых моментов в алгоритме задачи, в фракталах -- одинаковых моментов в изображении.
Теперь только руку набить осталось в определении рекурсивных алгоритмов. Случаем задачников таких не существует для обучения? :) Типа как в судоку: легко, средне, сложно?
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36546865
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из инженерной графики: Снежинка Коха, Множество Мандельбротта, Кривая Гилберта, Кривая Серпинского, Лист Папоротника, Различные алгоритмы генерации лабиринтов (Maze), Фрактальное сжатие изображение.

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

Игровые задачи: Решение (solve) шахматных, шашечных и прочих настольных задач, ханойские башни, головоломки, кубики-рубики, пентамино, раскройка, укладка рюкзаков.

Около-научные задачи: генетические проблемы, поиск лекарств "от всего".

Разработка трансляторов : парсеры, BNF, Yacc, Bizon, XML/XPath.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36546890
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GwaShSergeУ попа была собака, он её любил. Она съела кусок мяса. Он её убил. На могиле написал: "У попа была собака..." - это и есть рекурсия.

Это как раз пример рекурсии без выхода, ведущей к переполнению стека..

Не всякая рекурсия без выхода ведет к переполнению стека
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36547002
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в дополнение к предыдущему оратору, стек - только один из инструментов реализации рекурсии.
Для реализации рекурсии порождающей итеративный процесс, в энергичных
языках используют хвостовую рекурсию.ЕМНИП, в ленивых даже не нужно аккумулятор
использовать, там сборщик мусора сам все проблемы решает.
а если учесть что рекурсия понятие математическое(философское если хотите), то
стек, память и время выполнения - имеет мало общего с этим понятием.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36547099
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNа если учесть что рекурсия понятие математическое(философское если хотите), то
стек, память и время выполнения - имеет мало общего с этим понятием.до тех пор, пока алгоритм существует на бумаге - да, если же он воплощается в программный код, то, к сожалению, стек, память и прочая "мутота" вылезают на поверхность во всей своей неприглядности =)))
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36548998
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рекурсия -- это рекурсия
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559166
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все эти обычные слова навроде "рекурсия -- это вызов функцией самой себя" никакого понимания не дают, а пытливого человека могут лишь запутать.

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

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

Непосредственно же реализация возможности рекурсивных вызовов (в компиляторах, виртуальных машинах и т.п.), так же как и всякие оптимизации хвостовых вызовов и т.п. -- вопросы скорее технического характера, самого понимания "рекурсии" мало касающиеся.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559241
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior idiot...
Ну как можно "вызвать" функцию, которая ещё не определена, то есть ещё неизвестно, что она из себя представляет и какой процесс вычислений задаёт?
...Самым обычным способом. Функции в каком-то смысле и были придуманы для того, чтобы можно было ими пользоваться, "не зная, что они из себя представляет". Именно так и используется подавляющее большинство системных , библиотечных ф-й или функций созданных другими программистами. Именно на этом основано программирование "сверху вниз" - применение или вызовы функций пишутся до реализации этих функций. Причем это фактическое применение может дополнять (или иногда даже замещать) техническое задание и т.д., когда функции нижнего уровня пишутся другим программистом.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559245
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avb1003 ,
Использование функций, детали реализации которых в данный момент не важны , и использование функций, детали реализации которых в данный момент как раз и описываются -- принципиально разные вещи, ничего общего не имеющие.
Первое совершенно очевидным образом возможно без именования функций (то есть связывания некоторого процесса вычислений с определённым символом): достаточно просто оставлять пробелы, в которые потом вписывать детализирующий код.
А вот что делать с рекурсией без возможности именовать функции? Здесь выход совершенно не так очевиден.
А вопрос этот вполне естественный, ведь интуитивно ясно, что "функция", что бы ни подразумевалось под этим словом, никак не должна зависеть от каких-то там наименований и условных обозначений.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559266
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior idiot avb1003 ,
Использование функций, детали реализации которых в данный момент не важны , и использование функций, детали реализации которых в данный момент как раз и описываются -- принципиально разные вещи, ничего общего не имеющие.
...Это только на Ваш взглядjunior idiot...
Первое совершенно очевидным образом возможно без именования функций (то есть связывания некоторого процесса вычислений с определённым символом): достаточно просто оставлять пробелы, в которые потом вписывать детализирующий код.Это вообще мимо. Именование функции, число и тип параметров должны быть уже известны. То есть вызов должен делаться после "объявления функции", как это называется в книжках по С++.junior idiot...
А вот что делать с рекурсией без возможности именовать функции? Кажется, что Вы никогда не писали никаких функций, так как придумываете несуществующие проблемы. Кто лишил Вас возможности "именовать" функцию? junior idiot ...
Здесь выход совершенно не так очевиден.Начните что-нибудь программировать и все станет гораздо очевиднее.junior idiot...
А вопрос этот вполне естественный, ведь интуитивно ясно, что "функция", что бы ни подразумевалось под этим словом, никак не должна зависеть от каких-то там наименований и условных обозначений.Здесь вообще непонятно, что Вы хотели сказать. В данном контексте функция или же подпрограмма просто "поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий...." См. Подпрограмма или Функция (программирование)
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559287
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avb1003Это вообще мимо. Именование функции, число и тип параметров должны быть уже известны. То есть вызов должен делаться после "объявления функции", как это называется в книжках по С++.
Вызов чего , простите? Имени, числа и типов параметров?
Хе-хе.

avb1003Начните что-нибудь программировать и все станет гораздо очевиднее.
Ну, давайте попробую.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
> (((lambda (f)
     ((lambda (x)
        (f (lambda (y) ((x x) y))))
      (lambda (x)
        (f (lambda (y) ((x x) y))))))
   (lambda (fact) 
     (lambda (n) 
       (if (eq? n  0 )  1 
           (* n (fact (- n  1 )))))))
    10 )

 3628800 
Смотрите-ка, получилось (10! = 3628800). Функция рекурсивная, алгоритм её вычисления рекурсивный, а именованных функций нет, одни анонимные лямбды.
Но разве такое преобразование очевидно? И уж тем более его вычислительный смысл? Мне -- нет. Подумать есть над чем, вполне.

avb1003Здесь вообще непонятно, что Вы хотели сказать. В данном контексте функция или же подпрограмма просто "поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий...."
Именно, набор действий . Но "объявленная функция" (что Вы считаете достаточным для её вызова) ещё не является ни действием ни набором действий -- она лишь имя и ничего более. Так на каком основании она может являться частью подпрограммы?
Можно, конечно, априорно обозвать рекурсивную функцию "действием", тогда определение вполне удовлетворяется. Только такой тип рассуждений в логике называется "порочный круг" и на практике может привести к ошибкам. А может и не привести (как в данном случае).

Вряд ли кто-то сомневается, что вполне можно пользоваться рекурсией, не обладая пониманием того, что это такое. Но, как мне показалось, топик как раз о том, что это такое , а не как этим пользоваться .
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559290
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эх, самое главное-то пропустил я.
avb1003придумываете несуществующие проблемы. Кто лишил Вас возможности "именовать" функцию?
Меня -- никто. Но функция, являясь лишь "набором действий", вовсе не обязана обладать именем. Ведь не обязана? Конечно, не обязана, и анонимные функции нынче очень широко используются, да и наивно было бы думать, что процессор что-то знает про то, как там была названа в коде та или иная функция -- foo() или bar().
Следовательно, должна быть возможность абстрагироваться от имени функции и от процесса именования вообще. Если такой возможности я не вижу, то это означает, что связь между моим кодом и процессом его исполнения компьютером для меня не ясна.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559361
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior idiotЭх, самое главное-то пропустил я.
avb1003придумываете несуществующие проблемы. Кто лишил Вас возможности "именовать" функцию?
Меня -- никто. Но функция, являясь лишь "набором действий", вовсе не обязана обладать именем. Ведь не обязана? ...Именем не обязана. Если функция вызывается только из одно места, то это даже может быть удобно - не давать имени функции, если этого не нужно. Perl, например, предоставляет эту возможность. Но в определении, которое я привел написано: "...или иным образом идентифицированная часть компьютерной программы...", то есть, что-то вроде адреса у нее обязательно есть.junior idiot...... Конечно, не обязана, и анонимные функции нынче очень широко используются, да и наивно было бы думать, что процессор что-то знает про то, как там была названа в коде та или иная функция -- foo() или bar() ...А так никто и не думает. Процессор "знает" только команды, котороые он обязан выполнять.junior idiot...
Следовательно, должна быть возможность абстрагироваться от имени функции и от процесса именования вообще. ... У Вас никто не отнимает возможности, например, поработать процессором. Но стоит ли? Абстракции, имена и т.п. вводятся(по крайней мере, как правило) для облегчения задачи, а вовсе не для того, чтобы запутать/обмануть неофитов. junior idiot...Если такой возможности я не вижу, то это означает, что связь между моим кодом и процессом его исполнения компьютером для меня не ясна.С этим спорить почти невозможно. Разве что с помощью детектора лжи и т.п. Вот когда кто-то говорит, что ему все ясно, тут гораздо больше возможности доказать обратное, если этот кто-то ошибается.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559405
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003Именем не обязана. Если функция вызывается только из одно места, то это даже может быть удобно - не давать имени функции, если этого не нужно. Perl, например, предоставляет эту возможность.

это не единственное применение и далеко не только перл предоставляет такую возможность.

avb1003
Но в определении, которое я привел написано: "...или иным образом идентифицированная часть компьютерной программы...", то есть, что-то вроде адреса у нее обязательно есть.
это определение функций как подпрограмм, что свойствено императивному подходу и старым процедурным языкам. в функциональном функции не являются "подрограммами" в этом смысле.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559413
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvin
это не единственное применение
например с помощью анонимных функций можно моделировать типы данных, например "пару" (Сассман в видео SICP назвал этот приём "хаком Черча" =)):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
(define (make-pair x y)
  (lambda (m) (m x y)))

(define (first pair)
  (pair (lambda (x y) x)))

(define (second pair)
  (pair (lambda (x y) y)))

;;; Testing:

(define a (make-pair  1   2 )) ; =>  #<procedure> ; implementation dependent

(first a) ; =>  1 

(second a) ; =>  2 
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559437
Constantine Voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рекурсия - это рекурсия.
...
Рейтинг: 0 / 0
Что такое рекурсия, есть ли доходчивая инфа?
    #36559972
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinavb1003Именем не обязана. Если функция вызывается только из одно места, то это даже может быть удобно - не давать имени функции, если этого не нужно. Perl, например, предоставляет эту возможность.

это не единственное применение и далеко не только перл предоставляет такую возможность.А где Вы увидели про единственность или про исключительность Perl?k0rvin

avb1003
Но в определении, которое я привел написано: "...или иным образом идентифицированная часть компьютерной программы...", то есть, что-то вроде адреса у нее обязательно есть.
это определение функций как подпрограмм, что свойствено императивному подходу и старым процедурным языкам. в функциональном функции не являются "подрограммами" в этом смысле.Ну и что, что "... императивному...", что "... старым ..." или "... процедурным ..." ? Отвечая на вопрос, я думал оказать промощь тому , кто, как мне показалось, действительно зашел в тупик от бессмысленных размышелений, а вовсе не пытался изрекать истину в последней инстанции, тем более мерятся длиной "выступающих частей тела". Да, я не являюсь специалистом по языку Лисп, хотя и прочитал книгу по нему, смотрел примеры и т.д. и когда в начале 90-х мне, тогда программисту на Фортране, понадобились дополнительные члены в каких-то формулах из учебников, я сам их нашел с помощью какой-то Лисп-подобной системы. Не помню точно, но кажется это был MuMATH Но, повторяю, я не являюсь специалистом по Лисп и не готов комментировать/давать советы. По крайней мере бесплатно и на этом форуме. Могу только предположить, IMHO конечно, что человеку испытывающими проблемы с Лисп, имеет смысл заняться чем-то попроще - например, программированием на Фортране. Или на Perl, что с моей точки зрения полезней и интересней. Опять-таки IMHO.
...
Рейтинг: 0 / 0
25 сообщений из 81, страница 3 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Что такое рекурсия, есть ли доходчивая инфа?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]