我参加了计算机科学类(class),我们正在学习递归。老师向我们展示了一些代码,我想知道它为什么有效。 Buscar 是数组 v[] 中的递归搜索函数。它返回 x 在 v[] 中的位置
int buscar(int x, int v[], int n) {
if(n == 0) return -1;
if(x == v[n-1]) return n-1;
buscar(x, v, n-1);
}
int main() {
int v[] = {5, 3, 9, 12};
printf("%d\n", buscar(5, v, 4));
}
这里的问题是
buscar(x, v, n-1);
它不应该返回“无”并因某些错误而终止吗? 当我运行这个程序时,结果是正确的,符合预期。为什么它的工作原理与
相同return buscar(x, v, n-1);
最佳答案
正如其他人评论的那样,您的代码显示了未定义的行为。
您“意外”(或巧合)获得预期结果的事实可能是不同级别的函数使用相同的处理器寄存器返回函数结果的结果。
关于c - 递归函数中缺少 return 语句,仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55359316/