作为示例,我将使用接近该代码的代码 posted on stackoverflow :
void recurse(int level=1) {
printf("Level=%02d\n", level);
if (level > 14) {
printf("Depth exceeded 14 !!!\n");
return;
}
recurse(level+1);
//recurse(level+1);//commented out, i get levels 1-15 in a row
}
假设我用它来调用它
recurse(1);
通过函数内部的一次递归调用,我得到了我所期望的结果 - 打印出 1-15 级和多余的消息。
如果我取消注释第二个调用,我不会收到 2 x 15 多余的消息,但我猜测,会收到 15 x 15 深度多余的消息。
有没有办法重写它,使我的递归深度为 2 x 15,而不是 15 x 15?
谢谢你们的快速解答。
不幸的是,我都错了:)我的印象是,第一个内部调用会递归出来,然后是第二个,所以我会有 2 x 15 的深度。
最佳答案
保持函数不变。调用两次。
recurse(1);
recurse(1);
关于c 递归太深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21885182/