首页 > 解决方案 > 如何使我的阶乘函数可重入?

问题描述

我应该写一个可重入阶乘函数,当我搜索什么是可重入函数时,我发现很多定义,例如可重入函数不应该使用静态或全局变量,并且函数在使用时不能更改,我避免使用静态或全局变量,但我不知道是否足以让我的函数可重入,

    #include <stdio.h>

    int fact(int n){
       int c,fact = 1;
       for (c = 1; c <= n; c++)
           fact = fact * c;
        return fact;
    }
    int main()
    {   
        int n;  
        printf("Enter a number to calculate its factorial\n");
        scanf("%d", &n);
        fact(n);
        printf("Factorial of %d = %d\n", n, fact(n));

      return 0;
    }

标签: cfactorialreentrancy

解决方案


你的函数,fact(n)既没有使用全局数据也没有使用静态数据,没有修改自己的代码,也没有在其中调用另一个不可重入函数。

你的功能

int fact(int n){
   int c,fact = 1;
   for (c = 1; c <= n; c++)
       fact = fact * c;
    return fact;
}

只在 main 中调用过一次。


推荐阅读