#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;
}
请帮我这个代码。这段代码有什么问题?
答案 0 :(得分:3)
事实功能中没有基本条件。
您需要检查:
if(i == 1){
return 1;
}else{
return i * fact(i - 1);
}
答案 1 :(得分:3)
if(x<1)
您确定不是x > 1
吗?
另外,我会在你的static
声明中删除tot
。这类似于全局变量处理tot
。你不需要那个。由于tot
总是在阅读前分配,因此它看起来似乎没有害处,但一般来说它看起来像是一面红旗。
答案 2 :(得分:1)
你在if语句中错误打印,它应该是
if(x > 1) {
tot=x*fact(x-1);
}
编辑:tot
也必须是非静态的。
答案 3 :(得分:1)
您不希望static
声明中出现tot
。