Вопросы по теме 'tail-recursion'
Разделение списка элементов на два списка нечетных и четных проиндексированных элементов
Я хотел бы создать функцию, которая принимает список и возвращает два списка: первый содержит все нечетные элементы, а второй - все четные элементы.
Например, учитывая [1;2;4;6;7;9] , я хотел бы вернуть [ [1;4;7] ; [2;6;9] ] .
Я написал это до...
6532 просмотров
schedule
05.01.2024
как сделать эти простые функции хвостовой рекурсией в 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 просмотров
schedule
03.06.2024
Есть ли способ вырваться из @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 просмотров
schedule
31.12.2023
Как избежать двойного вызова функции в (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 просмотров
schedule
12.12.2022
Включить оптимизацию хвостового вызова только в 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 просмотров
schedule
12.10.2022
Оптимизация рекурсивной функции
В настоящее время я работаю над побочным проектом, который имеет дело с большим количеством рекурсивных вызовов. Я не ученый-компьютерщик, поэтому я не совсем уверен, как оптимизировать свой код. Я знаю, что рекурсивные функции не очень эффективны,...
3081 просмотров
schedule
04.06.2024
Где ошибка в этой хвостовой рекурсивной функции Haskell?
Я должен реализовать функцию суммы в Haskell двумя способами. Одна функция с хвостовой рекурсией, а другая без хвостовой рекурсии.
Вот вариант без хвостовой рекурсии, и он отлично работает
sum1 x = if x==0 then 0 else x + sum1(x-1)
Вот...
212 просмотров
schedule
20.11.2022
Нарушает ли общий указатель оптимизацию хвостового вызова?
Предисловие
Я практикую C ++ и пытаюсь реализовать неизменяемый список. В одном из своих тестов я пытаюсь рекурсивно создать список с большим количеством значений (1 миллион узлов). Все значения равны const , поэтому я не могу выполнить обычный...
326 просмотров
schedule
30.12.2023
Управление хвостовой рекурсией 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 просмотров
schedule
07.12.2022