c - 为什么下面的程序中打印语句出现了五次?

标签 c recursion logic

根据递归逻辑,printf()最后必须只遇到一次。 main()之后if()应该将控件发送回开头。仅在var之后如果我们达到 printf() 则为零。为什么我们会遇到printf()五次?我知道以前已经有人问过这个问题,但其中没有解释这个逻辑。

void main()
{
    static int var=5;
    if(--var){
      main();
    }
    printf("%d\n", var);
}

最佳答案

printf 语句不在 if 内。对 main 的每次(递归)调用最终都会在终止之前调用 printf

关于c - 为什么下面的程序中打印语句出现了五次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29715916/

相关文章:

javascript - JavaScript 中的 takeWhile 实现 - 寻找更好的想法

c++ - 分段故障?

reporting-services - SSRS 中 IIF 语句的问题

haskell - 为什么 MLF 中有弹性和刚性边界?

c - 在 C 中使用字母 ñ

c - 无法正确释放另一个 malloc 的 malloc

javascript - Javascript 中递归编写的范围函数

c - char指针和数组的栈指针区别

c - 字典类型 "Phone book"开放散列?和可能的链表?

c# - 判断两个表是否相关的函数