LINUX.ORG.RU

Если некомфортно с циклами, то плохой программист?

Если некомфортно с условиями, то плохой программист?

Если некомфортно с функциями, то плохой программист?

anonymous
()
Ответ на: комментарий от Manhunt

Ему кажется, что они за спиной готовят его убийство.

anonymous
()

рекурсия бывает разной

Когда два рекурсивных вызова у функции, то мне некомфортно. С у-комбинатором тоже некомфортно. А рекурсивный факториал с закрытыми глазами за 20 сек. напишу.

Доктор, что со мной?

privet
()

Если некомфортно быть программистом, то плохой программист?

l0stparadise ★★★★★
()
Если (некомфортно с рекурсией)
То
  плохой программист
Иначе
  проверить как с рекурсией
Кон если
anonymous
()

то это плохой, негодный тампакс. или ты его не так используешь.

Deleted
()

Мне некомфортно с ней. Все таки хрен знает, вдруг весь стэк выжрешь? Плохим программистом себя от этого не считаю.

DiKeert ★★
()

а кому с ней комфортно? каждый вложенный вызов, емнип, создаёт свои внутренние переменные и каждой память подавай

grem ★★★★★
()
Ответ на: комментарий от grem

Дык не надо ваять стокилобайтовые процедуры с «временными» массивами. Рекурсивная часть должна быть маленькой во всех смыслах.

anonymous
()

* Здесь должна быть рекурсивная шутка про то, что здесь должна быть рекурсивная шутка. *

Если серьезно — понимание рекурсии важно для освоения более сложных приемов, основанных на рекурсии: рекурсивные структуры данных/алгоритмы/определения/etc.

А если скатиться до срача «циклы vs рекурсия в императивных ЯП», то циклы победят по скорости и эффективности (рекурсия — по минимальности кода).

KennyMinigun ★★★★★
()
Ответ на: комментарий от anonymous

Дык не надо ваять стокилобайтовые процедуры с «временными» массивами. Рекурсивная часть должна быть маленькой во всех смыслах.

Все равно на стеке будет оверхед: как минимум адрес возврата для каждой итерации.

KennyMinigun ★★★★★
()
Ответ на: комментарий от anonymous

Если не понимаешь, что твой код делает - плохой.

Если ты понимаешь, что твой код делает - плохой. На самом деле ты ничего не понимаешь.

anonymous
()
Ответ на: комментарий от KennyMinigun

Все равно на стеке будет оверхед

Откажись от процедур, локальных переменных и твой стек всегда будет чистым и шелковистым.

Оверхеда бояться - программировать не ходить.

anonymous
()
Ответ на: комментарий от anonymous

Откажись от процедур,

Рекурсия без процедур? Всмысле?

Ты имел ввиду «только функции»? Так с ними тоже адрес возврата каждый раз на стеке. Аргументы тоже сохраняются на стеке (впрочем, именно это и является одной из плюшек рекурсивных функций).

Оверхеда бояться - программировать не ходить.

Страх вообще ведет на темную сторону силы, если на то пошло.

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну в твоей реальности все по твоему.

А ты из какой-то другой? Тогда понятно.

anonymous
()
Ответ на: комментарий от KennyMinigun

как минимум адрес возврата для каждой итерации

А для условных операторов этого не случается, давай и без них, чо уж.

deep-purple ★★★★★
()

Рекурсия для мужиков!! Не будь тряпкой!!xDDD

#include <stdio.h> #include <stdlib.h>

struct joke { int lol; struct joke *back; };

int create(int number, struct joke *back) {

struct joke joke = { .lol = number, .back = back };

return (number < 2) ? run(&joke) : create(number - 1, &joke); };

int run(struct joke *back) {

while(back) { printf(«%p\n», back); back = back->back; }

return 0; };

int main (int argc, char *argv[]) {

if (argc < 2) { printf(«Usage: %s <number>\n», argv[0]); return 0; }

create(atoi(argv[1]), NULL);

return 0; }

maxmax
()

Ну я перестал бояться и полюбил рекурсию после изучения лиспа, правда потом вернулся на плюсы и в реальных задачах больше не использовал)

CrossFire ★★★★★
()

Плохой программист это тот, кто пишет плохой код. Если тебе некомфортно с рекурсией, скорее всего ты просто неопытный программист. Практикуйся побольше.

Legioner ★★★★★
()

недостаточно данных

anonymous
()

Пропиши себе функциональный ЯП в котором нет циклов и стек не фиксированного размера.

KblCb ★★★★★
()
Ответ на: комментарий от anonymous

Я просто оставлю это здесь. boost::mpl::list.

anonymous
()
Ответ на: комментарий от anonymous

Далеко не всегда. Если дерево большое, то никакой рекурсии.

anonymous
()
Ответ на: комментарий от anonymous

Поиск по дереву -> рекурсия.

Не умеешь - не берись. Это не «рекурсия», это сделанный вручную стек в куче.

anonymous
()
Ответ на: комментарий от Miguel

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

maxmax
()
Ответ на: комментарий от anonymous

Далеко не всегда. Если дерево большое, то никакой рекурсии.
Не умеешь - не берись. Это не «рекурсия», это сделанный вручную стек в куче.

А кто вам сказал, что вы всегда решаете как будут организованы данные? У вас есть на руках конкретный интерфейс к DOM, например, и ничего кроме рекурсии вам не подойдет.

anonymous
()
Ответ на: комментарий от deep-purple

как минимум адрес возврата для каждой итерации

А для условных операторов этого не случается

Не случается.

KennyMinigun ★★★★★
()
Ответ на: комментарий от sadlinuxoid

Лол, даже твой любимый Хьюитт уже понял, что

Types are fundamental to programming languages and consequently untyped programming languages are a mistake.

anonymous
()
bool хороший_ли_ты_программист() {
    if(тебе_комфортно_с_рекурсией)
        return true;
    else {
        практикуйся_еще();
        return хороший_ли_ты_программист();
    }
}
Aswed ★★★★★
()
Ответ на: комментарий от Aswed

рекурсивная комфортность как показатель хорошего программистаxD

maxmax
()
Ответ на: комментарий от Aswed
warning: all paths through this function will call itself
      [-Winfinite-recursion]
anonymous
()

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

unt1tled ★★★★
() автор топика
Ответ на: комментарий от KennyMinigun

Все равно на стеке будет оверхед: как минимум адрес возврата для каждой итерации.

Используй «хвостовую рекурсию» в языках с её оптимизацией и всё у тебя будет хорошо.

yyk ★★★★★
()
Ответ на: комментарий от unt1tled

написание рекурсивной функции, возвращающей энное число Фибоначчи (кажде следующее — сумма двух предыдущих)

А ведь тебе и правда некомфортно с рекурсией. Почему базовый случай не написал?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.