Nano Hash - криптовалюты, майнинг, программирование

Практические примеры взаимной рекурсии?

Я читал про взаимную рекурсию. Почти во всех материалах на примерах было проблемой определить, является ли целое число четным или нечетным?

int is_even(unsigned int n)
{
    if (n==0) return 1;
    else return(is_odd(n-1));
}

int is_odd(unsigned int n)
{
    return (!iseven(n));
}

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

Другим примером была проблема, чтобы узнать, является ли человек женщиной или мужчиной. Это также может быть решено более простым способом без использования рекурсии.

Так является ли взаимная рекурсия просто теоретической или где-нибудь я могу использовать ее практически, чтобы сделать мое решение проще, чем при использовании любой другой техники?

Не могли бы вы помочь мне, приведя такой пример?


  • Алгоритм min max является хорошим примером 15.07.2013

Ответы:


1

Взаимная рекурсия не очень распространена, но иногда полезна. Разбор текста с помощью метода «рекурсивного спуска» — это одна из практических настроек, где вы можете его найти.

http://en.m.wikipedia.org/wiki/Recursive_descent_parser

15.07.2013

2

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

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

15.07.2013

3

Очень поздний пост, одним из примеров является алгоритм Quickselect, если ваша стратегия для разворота - < алгоритм href="https://en.wikipedia.org/wiki/Median_of_medians" rel="nofollow noreferrer">медианы медиан, поскольку метод сводки медианы медиан вызывает быстрый выбор для расчета медиана n/5 медиан каждой группы из 5 элементов.

Еще одним популярным является метод eval-apply для компиляции s-выражения в Scheme, следующая реализация от Matt Might:

 eval takes an expression and an environment to a value
(define (eval e env) (cond
  ((symbol? e)       (cadr (assq e env)))
  ((eq? (car e) 'λ)  (cons e env))
  (else              (apply (eval (car e) env) (eval (cadr e) env)))))

; apply takes a function and an argument to a value
(define (apply f x)
  (eval (cddr (car f)) (cons (list (cadr (car f)) x) (cdr f))))

; read and parse stdin, then evaluate:
(display (eval (read) '())) (newline)
10.05.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..