有人可以帮我理解这个程序吗?

标签 c recursion

这是我用 C 编写的程序。

f(int n){
    if(!n){
        return 0;
    }
    printf("%d", f(--n));
    printf("*");
    return (n+1);
}

int main()
{
    f(3);
    return 0;
}

并打印:

0*1*2*

现在我不明白为什么它首先进入 printf 并在 (--n) 中下降一个 但在达到 0 之前不会打印任何内容

最佳答案

一图胜千言。

  • 实心箭头 = 函数调用

  • 虚线箭头 = 函数返回。

enter image description here

关于有人可以帮我理解这个程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51186697/

相关文章:

c - C语言中 float 的取值范围

计数打印不正确

javascript - 使 Ajax 请求递归 - 检查文件是否存在

命令如 1;和2c1;在 shell 上

比较 double 产生一个少一个和等于另一个

c - GnuTLS:编译示例代码时出错?

JAVA:帮助修复递归函数

haskell - 以递归方式正确编写存在函数

php - 将键值对的 PHP 数组转换为分层嵌套树结构

java - 如何改进已经是 O(n) 的递归排序算法?