2012-06-15 3 views
1

Я пишу глупый маленький скрипт, чтобы помочь мне присвоить рейтинги фильмам в моей коллекции. У меня есть множество названий фильмов, которые нужно сортировать. Я хочу применить рекурсивный алгоритм слияния, чтобы сортировать фильмы по рейтингу. При каждом сравнении я хочу, чтобы форма в документе обновлялась. Пользователь выберет либо A, либо B - лучший из двух названий - и затем нажмите кнопку «продолжить». Он будет использовать эту информацию для продолжения сортировки. По завершении процесса пользователь ответит A или B на минимальное количество двоичных вопросов сравнения, необходимых для создания упорядоченного списка фильмов.Рекурсивная функция с пользовательским вводом

Моя проблема: как я могу вернуть рекурсивный алгоритм на вход из формы для каждого шага? Использование чего-то вроде confirm() позволило бы блокировать код при вводе, но, очевидно, элементы страницы не могут этого сделать. Должен ли я включать некоторые неприятные функции тайм-аута? Держите какое-то глобальное закрытие? В идеале я хочу, чтобы кнопка «продолжить» была связана с обратным вызовом continueRecursion(), но я понятия не имею, как это сделать.

Любые предложения о том, как атаковать это?

+0

Структура данных, которая используется для представления рекурсии, представляет собой 'Stack'. (Это имеет смысл, поскольку программный стек представляет собой стек.) Таким образом, создайте структуру данных стека, а затем сохраните эмулированные локальные переменные, представляющие каждый вызов функции на каждом уровне стека. Затем поместите этот стек в глобальную переменную - и, надеюсь, вы увидите, где это происходит ... – cheeken

ответ

1

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

Итак:

  1. Получить данные
  2. Present выбор
  3. После выбора пользователя, дают представить выбор + старые данные процедуры сортировки.
  4. После сортировки данных на шаге 1 и продолжения снова.

Вам просто нужно будет хранить данные в глобальном масштабе или продолжать передавать их.

Смежные вопросы