используете ли вы рекурсивные алгоритмы

  1. 7 г. назад
    15.09.2016 00:02:21 отредактировано ЗлобнийМальчик

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

  2. использую

  3. не использую

  4. 15.09.2016 00:08:53 отредактировано jsmith82

    Предпочитаю рекурсию. Изящней.
    Вернее не предпочитаю, а просто использую - это проще, чем "стэк и цикл".

  5. можете привести пример кода. когда вам понадобилась рекурсия?

    Ответы: (5)
  6. 15.09.2016 06:57:53 отредактировано jsmith82

    (4) Работа с иерархическими справочниками, деревом значений, группировками в отчетах, табличных документах. Что наобум вспомнил.

  7. а код есть? А то я не врублюсь где такое понадобится может)

    Ответы: (7)
  8. (6) http://www.forum.mista.ru/topic.php?id=400453
    http://infostart.ru/public/195432/

  9. Конечно, в иерархических структурах с неограниченной глубиной оптимальнее алгоритма не найти.

    Ответы: (10) (11)
  10. в игре сапер используется. Когда игрок тыкает в область, где рядом ноль мин, рекурсивно открываются все квадратики вокруг этой области.
    Рекурсивные алгоритмы это и есть стек и цикл по своей сути

    Ответы: (13)
  11. (8) что есть оптимальность

    Ответы: (11) (13)
  12. 15.09.2016 08:50:06 отредактировано jsmith82

    ЗлобнийМальчик (8) что есть оптимальность

    Архитектура кода.
    Соттветствие кода мыслительным паттернам хомо сапиенс.

  13. Оптимальность, кмк, это баланс затрат использования процессорного времени, памяти и других ресурсов компьютера и затрат на разработку при решении программерских задачь.

  14. ЗлобнийМальчик что есть оптимальность

    В данном контексте - наглядность и избежание лишнего копрокодинга. В (9) все верно сказано, рекурсия - это и есть стек+цикл, так зачем плодить сущности сверх необходимости?

    Ответы: (17)
  15. Рекурсия по сути встречается редко. А вот ООП гораздо чаще. И влияние использования ООП на скорость разработки, поддержку и доработку значительно выше.

    Ответы: (15) (16)
  16. (14) это где в 1С ООП используется?

    Ответы: (19)
  17. jsmith82 Рекурсия по сути встречается редко. А вот ООП гораздо чаще.

    Крокодилы в России встречаются редко, а вот пельмени гораздо чаще. Да и пельмени вкуснее крокодилов

  18. Маратыч В данном контексте - наглядность и избежание лишнего копрокодинга.

    вы считаете, что рекурсивные алгоритмы нагляднее?

    Ответы: (18)
  19. (17) Я тоже так считаю.

  20. (15) Наследование - любой вид документа наследует от документатбъекта, любой вид справочника наследует от справочникаобъекта
    Полиморфизм - у доков, справочников, планов обмена и т. д. есть одинаковые методы, получитьОбъект, Записать, Выбрать,...
    Абстракция - мы же не пишем записи в БД, не строим там табоицы, оперируем документами, справочниками, не вдаваясь даже в какой они бд, или даже не в бд (файловая)
    Инкапсуляция - а вот тут хз, нет этого в 1с пока

    Ответы: (21)
  21. простой пример, перевод из шестнадцатиричной в десятичную и обратно:

    Функция Из10в16(ЧислоВходящее) Экспорт
    	
    	МладшиеБиты = ЧислоВходящее % 16;
    	СтаршиеБиты = Цел(ЧислоВходящее / 16);
    	
    	МладшиеБитыСтр = Сред("0123456789ABCDEF", МладшиеБиты + 1, 1);
    	
    	Если СтаршиеБиты > 0 Тогда
    		Возврат Из10в16(СтаршиеБиты) + МладшиеБитыСтр;
    	Иначе
    		Возврат МладшиеБитыСтр;
    	КонецЕсли;
    	
    КонецФункции
    
    Функция Из16в10(ЧислоВходящее) Экспорт
    	
    	МладшиеБиты = Найти("0123456789ABCDEF", Прав(ЧислоВходящее, 1)) - 1;
    	СтаршиеБиты = Лев(ЧислоВходящее, СтрДлина(ЧислоВходящее) - 1);
    	
    	Если СтаршиеБиты <> "" Тогда
    		Возврат Из16в10(СтаршиеБиты)*16 + МладшиеБиты;
    	Иначе
    		Возврат МладшиеБиты;
    	КонецЕсли;
    	
    КонецФункции
    

    мне более наглядно рекурсией

    Ответы: (22)
  22. (19) ты не можешь сам создать объект, унаследованный от другого созданного тобой объекта.
    Впрочем, ладно, этот спор уже давно идёт. Нет смысла его продолжать

  23. (20) во тут как раз рекурсия нафиг не сдалась

  24. 15.09.2016 09:37:05 отредактировано sda553
    Функция Из10в16(Знач ЧислоВходящее) Экспорт
        МладшиеБитыСтр="";
        Пока ЧислоВходящее>0 Цикл
            МладшиеБитыСтр = Сред("0123456789ABCDEF", ЧислоВходящее % 16 + 1, 1)+МладшиеБитыСтр;
           ЧислоВходящее = Цел(ЧислоВходящее / 16);
    КонецЦикла
    Возврат ?(МладшиеБитыСтр="", "0",МладшиеБитыСтр);
    КонецФункции
    

    я б так переписал

  25. иногда бывало нужно.

    Ответы: (25) (26)
  26. (24) у тебя мозгов не хватит использовать рекурсию

    Ответы: (26)
  27. zak555 (24) у тебя мозгов не хватит использовать рекурсию

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

    Ответы: (27) (28)
  28. (26) напиши мне рекурсивную функцию по получению n! * (-1)^n

    Ответы: (28) (32)
  29. zak555 (26) напиши мне рекурсивную функцию по получению n! * (-1)^n

    без проблем. 3000 рублей

    Ответы: (30)
  30. (28) Что и требовалось доказать.

  31. слился

  32. (27) ты бы посложнее, чего дал. Рекурсивное определение факториала учат в школе ...

    Ответы: (34)
  33. И оно выглядит так n! = n * (n-1)! - я еще подумал чего то оно меня смущает ...

  34. (32) т-с-с
    мегапрогу подсказки не нужны

или зарегистрируйтесь чтобы ответить!