#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
地址中减去,但不从其值中减去。调用函数时,请使用&--numVal
而不是&numVal - 1
。