Использование функции от Generate all sequences of bits within Hamming distance t:Бросить рекурсивную функцию, когда динамическое условие выполняется
void magic(char* str, int i, int changesLeft) {
if (changesLeft == 0) {
printf("%s\n", str);
return;
}
if (i < 0) return;
// flip current bit
str[i] = str[i] == '0' ? '1' : '0';
magic(str, i-1, changesLeft-1);
// or don't flip it (flip it again to undo)
str[i] = str[i] == '0' ? '1' : '0';
magic(str, i-1, changesLeft);
}
Я хотел бы выйти из рекурсивной функции и вернуться к функции вызывающего абонента, когда возникает определенное условие (если он делает). Так что, как и моя рекурсивная функция, слышу голоса, которые могут сказать ей уйти!
Это происходит только после того, как str
печатается здесь:
if (changesLeft == 0) {
printf("%s\n", str);
int quit_now = voices(str);
return;
}
Как это сделать (остановить разворачивание рекурсию и вернуться к функции вызывающей)?
Попытка:
if (i < 0 || quit_now == 1) return;
только кажется, чтобы блокировать выполнение и никогда не закончится!
PS - Меня интересует даже в c старые методологии.
Вы попробовали goto: вместо возврата? – hbagdi
@hbagdi черная овца? : O Я никогда не касался его, но если вы опубликуете ответ, который докажет, что он может пригодиться, я бы хотел ... Мне уже 21 год! =) // не получилось, что это троллинг:/ – gsamaras
Не надо. Они троллируют вас. – paddy