Результаты поиска по запросу "tail-recursion"

3 ответа

https://jsperf.com/iterative-array-flatten/2

ункция, которая выравнивает массив const deepFlatten = (input) => { let result = []; input.forEach((val, index) => { if (Array.isArray(val)) { result.push(...deepFlatten(val)); } else { result.push(val); } }); return result; };Во время ...

8 ответов

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

не узнать, оптимизирует ли gcc (точнее, g ++) хвостовую рекурсию?в определенной функции? (Потому что это возникало несколько раз: я не хочу проверять, может ли gcc оптимизировать хвостовую рекурсию в целом. Я хочу знать, оптимизирует ли ...

5 ответов

почему вы хотите отлаживать функциональный код?

елэтот вопрос [https://stackoverflow.com/questions/340762/which-languages-support-tail-recursion-optimization] о том, какие языки оптимизируют хвостовую рекурсию. Почему C # не оптимизирует хвостовую рекурсию, когда это возможно? Для конкретного ...

ТОП публикаций

3 ответа

А поскольку это хвостовой контекст, функция является хвостовой рекурсивной. Вот как это делают функциональные программисты: просматривают тело определения на предмет рекурсивных вызовов, а затем проверяют, что каждое из них происходит в хвостовом контексте. Более интуитивное определение хвостового вызова - это когда ничего не делается с результатом вызова, кроме его возврата.

тся ли эта функция хвостовой рекурсивной? let rec rec_algo1 step J = if step = dSs then J else let a = Array.init (Array2D.length1 M) (fun i -> minby1J i M J) let argmin = a|> Array.minBy snd |> fst rec_algo1 (step+1) (argmin::J)В общем, есть ...

2 ответа

и избежать необходимости внутреннего метода. Но это не всегда возможно, и это не может быть красиво вызвано из кода Java, если вы беспокоитесь о взаимодействии.

ного новичок в том, что Скала пробует это, когда читает Дэвида Поллака «Начать Скала». Он определяет простую рекурсивную функцию, которая загружает все строки из файла: def allStrings(expr: => String): List[String] = expr match { case null => ...

2 ответа

 медленнее, на самом деле это будет иметь поведение O (n ^ 2), которого следует избегать, как ад. Если вы не хотите использовать реверс, просто используйте рекурсивное тело вместо хвостового и не используйте

ичок в изучении Erlang. После прочтения о списочном понимании и рекурсии в Erlang, я хотел попробовать реализовать свой собственныйmap функция, которая получилась так: % Map: Map all elements in a list by a function map(List,Fun) ...

2 ответа

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

ытие: это появилось в FsCheck, среде случайного тестирования F #, которую я поддерживаю. У меня есть решение, но оно мне не нравится. Более того, я не понимаю проблемы - ее просто обошли. Довольно стандартная реализация последовательности ...

4 ответа

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

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

2 ответа

Хвостовая рекурсия с Groovy

Я кодировал 3 факторных алгоритма: Во-первых, я ожидаю провала из-за переполнения стека. Нет проблем.Во вторых я стараюсьрекурсивный вызов, преобразуйте предыдущий алгоритм из рекурсивного в итеративный.Это не работает, но я не понимаю, ...

2 ответа

F # против OCaml: переполнение стека

Я недавно нашел презентацию оF # для программистов на Python [http://combiol.org/fs/FSUG_FS4PPv2.pptx]и, посмотрев его, решил самостоятельно реализовать решение «муравьиной головоломки». Есть муравей, который может ходить по плоской сетке. ...