我想使用 c 中的递归函数查找给定数字的阶乘。以下程序有什么问题?
#include<stdio.h>
int fact(int i);
void main()
{
int j;
j=fact(4);
printf("%d",j);
}
int fact(int i){
int x=i;static int tot=1;
if(x<1){
tot=x*fact(x-1);
}
return tot;
}
请帮我处理这段代码。这段代码中的wring是什么?
#include<stdio.h>
int fact(int i);
void main()
{
int j;
j=fact(4);
printf("%d",j);
}
int fact(int i){
int x=i;static int tot=1;
if(x<1){
tot=x*fact(x-1);
}
return tot;
}
Please help me with this code. What is wring in this code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您在事实函数中没有基本条件。
您需要检查:
You do not have a base condition in the fact function.
You need to check:
您确定您的意思不是
x > 1?
另外,我会在您的
tot
声明中删除static
。这将tot
视为与全局变量类似。你不需要那个。由于tot
总是在读取之前分配,因此看起来这里没有什么害处,但一般来说,它似乎是一个危险信号。Are you sure you didn't mean
x > 1
?Also, I would get rid of
static
in your declaration oftot
. This treatstot
similarly to a global variable. You don't need that. Sincetot
is always assigned before read it looks like it's not harmful here, but generally speaking it seems like a red flag.您不希望在
tot
声明中使用static
。You don't want the
static
in yourtot
declaration.您在 if 语句中打印错误,它应该是
编辑:此外
tot
必须是非静态的。You misprinted in if statement, it should be
EDIT: Also
tot
must be non-static.