Вопросы по теме 'tail-recursion'

Разделение списка элементов на два списка нечетных и четных проиндексированных элементов
Я хотел бы создать функцию, которая принимает список и возвращает два списка: первый содержит все нечетные элементы, а второй - все четные элементы. Например, учитывая [1;2;4;6;7;9] , я хотел бы вернуть [ [1;4;7] ; [2;6;9] ] . Я написал это до...
6532 просмотров

как сделать эти простые функции хвостовой рекурсией в f#
У меня есть эти две функции //Remove all even indexed elements from a list and return the rest let rec removeEven l = match l with | x0::x1::xs -> x1::removeEven (xs) | [] -> [] | [_] -> [] //combine list members into pairs let rec...
528 просмотров
schedule 04.10.2022

Как узнать, выполняет ли Prolog оптимизацию хвостового вызова
Используя разрабатываемую версию SWI Prolog (Win x64), я написал предикат DCG для детерминированного лексера (размещенного на github ) (таким образом, все внешние предикаты не оставляют точек выбора): read_token(parser(Grammar, Tables),...
1006 просмотров

Есть ли способ вырваться из @tailrec в Scala?
У меня есть метод, который является рекурсивным. Есть ли в scala способ разбиения на основе размера буфера (как показано ниже)? Например, случай выхода из строя, когда elementList.size> 5? val elementList = ListBuffer.empty[Book] @tailrec def...
1080 просмотров
schedule 12.03.2024

печатать двоичные числа в порядке возрастания
Я пытался напечатать двоичные числа в порядке возрастания 0 (00, затем 01, 10, 11). Такой, чтобы нули стояли перед. Я попытался использовать приведенный ниже код из здесь , но это не дает правильную операцию ( рабочий пример ) void test2()...
1254 просмотров
schedule 22.04.2024

Запрещает ли инструкция CLR .tail вытесняющий сборщик мусора?
Я пытаюсь отладить производственную проблему с помощью службы Windows, которая имеет тенденцию быстро выходить из строя после нескольких активных одновременных подключений. Благодаря магии дампа ядра и DebugDiag я смог обнаружить, что была отложенная...
797 просмотров

Как избежать двойного вызова функции в (recur..)
Пожалуйста, рассмотрите этот блок кода. (loop [k from res '()] (if (< (count res) n) (recur (next-num k) (conj res (next-num k))) (sort res))) Теперь предположим, что функция (next-num k) выполняет некоторые...
246 просмотров
schedule 25.09.2022

Как реализовать рекурсивную функцию в Racket?
Я пытаюсь создать функцию под названием lcm-from-factors, которая вычисляет наименьшее общее кратное двух чисел (m и n). Входными данными для функции являются m-co-groups и n-co-groups, в которых перечислены все простые Факторы и их силы. Например,...
399 просмотров
schedule 27.12.2023

Хвостовая рекурсия — Java
Я пытаюсь создать метод, который является хвостовым рекурсивным и находит sum уравнения ( i / 2i + 1 ), где i нужно увеличить 1-10 . У меня возникли проблемы с тем, как достичь базового случая и остановить рекурсию. Это то, что у меня есть до...
303 просмотров
schedule 29.12.2023

Как рекурсивно идентифицировать ячейки определенного типа в сетке?
Я изучаю F# и создаю приложение для тральщика. Как часть этого, я пытаюсь иметь метод, который детонирует все соседние мины, если мина детонирует, рекурсивно. Итак, если у меня есть сетка вроде: | 0 | 1 | 2 | ------------------------...
75 просмотров
schedule 15.09.2022

схема - Является ли функция хвостовой рекурсивной?
Я реализовал эту рекурсивную функцию в схеме: (define f (lambda (n) (cond ((= n 0) 0) ((= n 1) 2) ((= n 2) 37) ((odd? n) (+ (f (- n 3)) 1)) (else (+ (f (- (/ n 2) 1)) 7))))...
1442 просмотров
schedule 03.10.2022

Рекурсивная процедура к хвостовой рекурсивной процедуре
Я пытаюсь построить процедуру хвостовой рекурсии из другой процедуры, которую я уже построил. Но я не совсем осознаю, как я должен думать. Я приведу вам два примера, где первый — моя процедура, не являющаяся хвостовой рекурсией, а второй — моя...
76 просмотров
schedule 05.11.2022

Фильтрация коллекции Scala по нескольким элементам
У меня есть следующая рекурсивная функция для удаления элементов из списка ( zooResidents: List[(String, Int)] ), содержащихся в другом списке ( pets: List[String] . >). Он работает, но очень медленно. Как это сделать в Scala ? val pets =...
845 просмотров

Включить оптимизацию хвостового вызова только в GCC
В предыдущем вопросе я рассматривал простой пример кода, глядя на оптимизацию хвостового вызова. По этому вопросу я столкнулся с проблемой, что GCC применил слишком много оптимизации, чтобы продемонстрировать принцип, который должен был быть...
515 просмотров
schedule 21.11.2022

Хвостовая рекурсия F# с XAMARIN MAC OS
Я пытаюсь реализовать этот пример из http://fsharpforfunandprofit.com/posts/recursive-types-and-folds-2/ Я использую Xamarin 6.1.5 для MAC OS. Вот код type Book = {title: string; price: decimal} type ChocolateType = Dark | Milk |...
128 просмотров

Оптимизация рекурсивной функции
В настоящее время я работаю над побочным проектом, который имеет дело с большим количеством рекурсивных вызовов. Я не ученый-компьютерщик, поэтому я не совсем уверен, как оптимизировать свой код. Я знаю, что рекурсивные функции не очень эффективны,...
3081 просмотров
schedule 04.06.2024

Где ошибка в этой хвостовой рекурсивной функции Haskell?
Я должен реализовать функцию суммы в Haskell двумя способами. Одна функция с хвостовой рекурсией, а другая без хвостовой рекурсии. Вот вариант без хвостовой рекурсии, и он отлично работает sum1 x = if x==0 then 0 else x + sum1(x-1) Вот...
212 просмотров

Нарушает ли общий указатель оптимизацию хвостового вызова?
Предисловие Я практикую C ++ и пытаюсь реализовать неизменяемый список. В одном из своих тестов я пытаюсь рекурсивно создать список с большим количеством значений (1 миллион узлов). Все значения равны const , поэтому я не могу выполнить обычный...
326 просмотров

Управление хвостовой рекурсией Erlang
У меня есть сомнения, мне нужно выполнить хвостовую рекурсию для этой pow-функции: pow(_, 0) -> 1; pow(N, X) when X > 0 -> N * pow(N, X - 1). Я читал об этом, но не совсем понимаю. Может ли кто-нибудь объяснить мне, как...
70 просмотров
schedule 16.11.2022

как определить вывод сложной рекурсивной функции вручную
Вот рассматриваемый рекурсивный код: def trace(a, b): if (a > b): return -1 elif (a == b): print (a * a) return a * a else: m = (a + b) / 2 return trace (a, m) + trace (m + 1, b)...
472 просмотров