c - 函数调用的误区

标签 c

例如,我有一个计算 n! 的递归函数。

 int fact(int n){
    if(n==1)
       return 1;
    return n*fact(n-1);
}

我的问题是为什么我不能用 n-- 替换 n-1?或者我可以用 --n 替换它吗?

最佳答案

有两个原因。

One,n-- 是后递减。用作参数的值将是 n 的原始(未递减)值。

Two, n 在表达式中使用了两次(一次作为 * 的左侧参数,一次在递归调用的参数内)。在这种情况下,C 和 C++ 都没有指定求值顺序,因此不清楚 n 是在 n-- 之前还是之后求值(甚至是 --n )。

关于c - 函数调用的误区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51132026/

相关文章:

c - Linux在运行时写入进程自己的可执行文件

c - malloc 覆盖结构元素

c# - 我想读取控制台模式子进程的输出

在 C 中创建一个新目录

c - 为变量分配了多少内存?

c++ - pthread_mutex_unlock如何区分线程?

c - 通过比较两个 char 数组返回整数

php - 如何在函数内组织数据库连接的处理?

c - 字符数据类型编译后得到错误的结构大小

c - 分配时大小读/写无效