Я предполагаю, что это какой-то игровой цикл. В любом случае, мне приходят в голову две разные стратегии:
Первая стратегия: Объявите отдельный указатель на функцию, который просто продолжит ваш игровой цикл. После вызова определенной функции обновите ваш массив с помощью функции continue. Результат будет каждый раз, когда он выбирает элемент из вашего массива, который уже был запущен, это вызывает повтор. Для пользователя это будет выглядеть так, как будто это всегда вызывает новый вопрос. Вам нужно будет подсчитать, сколько вопросов было задано, чтобы вы знали, когда игра закончится.
Вторая стратегия: каждый раз, когда вы вызываете функцию, перемещайте все элементы массива вверх, чтобы заменить только что вызванный элемент. Итак, если ваш массив [f1, f2, f3, f4] и вы вызываете f2, вы переместите элементы вверх, чтобы ваш массив теперь выглядел как [f1, f3, f4]. Вам нужно будет отслеживать количество функций, которые вам нужно вызывать, и уменьшать этот индекс каждый раз, когда вы вызываете функцию, чтобы знать, (1) из какого диапазона вызывать функцию (0..3 становится 0..2 в следующий раз) и (2) знать, когда у вас не осталось вопросов и игра окончена.
Я уверен, что есть много других стратегий.