c - C 中递归的递归

标签 c recursion

我很难理解程序多次调用递归的代码部分。

输出为1233333。如果我将递归行更改为 fun (++count;)。输出是123,我理解其中的逻辑,但是当你开始多次调用递归时,我就迷失了。

#include <stdio.h> 
int fun(int count) { 
    printf("%d\n", count);
    if(count < 3) { 
        fun(fun(fun(++count)));
    }
    return count;
}

int main() 
{ 
    fun(1);
    return 0; 
}

最佳答案

第一个函数调用 1 作为参数并打印 1

然后进入if语句

计数增加

 fun(fun(fun(2)))

2 打印 and 并输入 if and

计数增加到 3

fun(fun(fun(3))))

打印了3,但是这次不输入if而是返回3

return(3)

并且 3 返回到之前的嵌套调用

 fun(fun(3))

这种情况发生了 4 次 因此输出

1233333

关于c - C 中递归的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685651/

相关文章:

c - 排列的矩阵和子矩阵

c - 在 C 和 C++ 中使用结构

java - 需要修复我的递归代码(get 需要返回 int 或 stackoverflow 错误)

Ruby 嵌套哈希 'super' key 访问

python - Python 中的快速排序实现

function - 如何在 Haskell 的树之间移动子树?

c - 不使用 _Generic 的 C 函数重载

c - 将循环计数器字符串化以引用 C 结构体的成员

c - 用 C 语言实现缓存

java - 从二叉搜索树中递归删除