c 递归太深

标签 c recursion

作为示例,我将使用接近该代码的代码 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/

相关文章:

javascript - 关于通过减少和连接展平使用递归的概念

c - 从 C 语言中读取文件并执行条件逻辑

c - 如何修改 C 上文件中的变量?

c - 使: *** [clean] Error 1 and No rule to make target errors

javascript - 循环无限嵌套对象并构造字符串

c# - 使用 Rx 为 webservice 调用创建一个轮询请求

c - 绕过 Nios II 处理器中的数据缓存

c - 'typeof' 之前的预期表达式或 'typeof' 之前的预期主表达式

带有线程 EXC_BAD_ACCESS 的 Objective-c 递归 block

javascript - 从 URL 创建对象树