不可能将变量的地址作为参数传递给接受整数指针的递归函数吗?

问题描述 投票:0回答:1
#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作为输出。

c function pointers recursion factorial
1个回答
1
投票

您从numVal地址中减去,但不从其值中减去。调用函数时,请使用&--numVal而不是&numVal - 1

© www.soinside.com 2019 - 2024. All rights reserved.