admin管理员组

文章数量:815885

递归函数c语言结束条件,满足动态条件时退出递归函数

使用函数生成汉明距离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 旧的方法论。

本文标签: 递归函数c语言结束条件满足动态条件时退出递归函数