【发布时间】:2020-06-07 11:55:42
【问题描述】:
#include <stdio.h>
int fact(int *num);
int main(void) {
int num = 5;
int result = fact(&num);
printf("Factorial = %d", result);
return 0;
}
int fact(int *num) {
int factres;
int numVal = *num;
if (numVal == 1) {
return 1;
}
factres = *num * fact(&numVal - 1);
return factres;
}
我正在学习在 C 中使用指针和函数,并编写了上面的代码来查找数字的阶乘。据我所知,代码看起来不错。我已经用整数指针参数声明了这个函数,并在 main 下定义了它。我在函数调用中传递变量的地址以计算阶乘。我哪里错了?我得到Factorial = 0 作为输出。
【问题讨论】:
-
你认为
&numVal - 1表达式有什么作用? -
没有充分的理由使用指针类型作为
fact的参数。 -
提示:输入应该是无符号的,
if (numVal == 1)应该是if (numVal <= 1),因为0! = 1
标签: c function pointers recursion factorial