简单的递归 不知道哪里错了(每回输入数字后如何结果都是1啊)

简单的递归 不知道错哪了(每回输入数字后怎么结果都是1啊)
# include "iostream.h"
 
void main()
 {  
int fact(int x); 
int p;
  int a ;
cin>>a;
p=fact(a);
cout<<p<<endl;



}
  int fact(int x)
  {long c;
 
  if (x=1) c=1; 
  else c=x * fact(x-1); 
 return c;
  }

------解决方案--------------------
if(x=1)c=1 //错误

养成好习惯~ if(1==x)c=1 可以帮我们检验这种低级错误
------解决方案--------------------
int fact(int x)
{
if (x==1) return 1;
return x * fact(x-1);

}

lz错在(x=1)这里,函数可以化简下
------解决方案--------------------
做出来了 if语句错了啊 改为 if(i==1) 呵呵 O(∩_∩)O~ 这是常犯的错误 楼主多注意一下啦
------解决方案--------------------
if(x=1) x=1是赋值语句,只要赋值正确,else就不会执行。
如三楼所说,可以写成if(1==x),这样一来,如果少写一个=编译器就会报错了