c - 如何使我的阶乘函数可重入?
问题描述
我应该写一个可重入阶乘函数,当我搜索什么是可重入函数时,我发现很多定义,例如可重入函数不应该使用静态或全局变量,并且函数在使用时不能更改,我避免使用静态或全局变量,但我不知道是否足以让我的函数可重入,
#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;
}
解决方案
你的函数,fact(n)
既没有使用全局数据也没有使用静态数据,没有修改自己的代码,也没有在其中调用另一个不可重入函数。
你的功能
int fact(int n){
int c,fact = 1;
for (c = 1; c <= n; c++)
fact = fact * c;
return fact;
}
只在 main 中调用过一次。
推荐阅读
- r - Rmarkdown:R 更新后无法使用 knitr::include_graphics 插入图像
- c# - 如何获取配对(在移动设置中连接)蓝牙设备的名称?
- intellij-idea - Intelij Ultimate 2019.2 JAXB
- azure-devops - 根据提交消息跳过阶段
- r - 当 tabsetPanel 和 hideTab 在 R 闪亮的观察者内时,hideTab 不起作用
- mysql - 如何使用 AES_ENCRYPT mysql
- angular - StaticInjectorError(AppModule)[MainComponent -> MatDialog]
- powershell - 将 ACL System.Security.AccessControl.FileSystemAccessRule 设置为多个用户?
- reactjs - 无法从 react-bootstrap 导入组件
- mysql - MySql:如何按 2 个特定类别然后按价格对查询进行排序?