c - 为什么这个函数在无限循环中运行?

标签 c

我正在尝试学习递归。我不明白为什么下面这段代码会无限循环运行?

void myFunc(int n)
{
     if(n==0)
         return;
     else
     {
         printf("%d\n",n);
         myFunc(n--); //if I put n=n-1 before this line then it is running fine and will exit from the function .
         printf("%d\n",n); 
     }

}

int main()
{

    myFunc(4);
}

最佳答案

-- 是您正在使用的后递减运算符,仅在使用 n 的值调用 myFunc 后才生效,因此您将一遍又一遍地使用相同的值调用 myFunc

将它用作预递减运算符可以解决您的特定用例:myFunc(--n) 与放置 n=n-1 有类似的效果上线前。

关于c - 为什么这个函数在无限循环中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15843667/

相关文章:

c - 将数据发送到 Ubuntu 上的 USB GPIO 设备

在 scilab 5.5.2 中创建 C 功能 block

c - 写入物理内存地址

LED驱动器与Arduino上的模数转换之间的冲突

C Scanf 在 Xcode 中跳过

c - 简单偏移加密中的段错误

c - 如何在Windows中使用MinGW的CLion中的C项目中使用pthread头文件

C函数指针和typedef

我们可以将一个函数定义为另一个函数吗?

围绕 -ffast-math 的 gcc 链接器行为的奇怪结果