【问题标题】:Is it not possible to pass address of a variable as argument to a recursive function that accepts integer pointers?是否不可能将变量的地址作为参数传递给接受整数指针的递归函数?
【发布时间】: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 作为输出。

【问题讨论】:

  • 你认为&amp;numVal - 1 表达式有什么作用?
  • 没有充分的理由使用指针类型作为fact 的参数。
  • 提示:输入应该是无符号的,if (numVal == 1)应该是if (numVal &lt;= 1),因为0! = 1

标签: c function pointers recursion factorial


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 2020-01-09
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多