函数的递归调用求阶乘的有关问题

函数的递归调用求阶乘的问题
#include <iostream>
using namespace std;
int factorial(int n);
int main()
{
cout<<factorial(8)<<"\n";
return 0;
}
int factorial(int n)
{
if((n=0)||(n=1))
return 1;
else
{
return n*factorial(n-1);
}
}
编写了一段程序,利用函数的递归调用求阶乘的问题,编译的时候出来的答案却为1,求高手看看问题处在哪里?

------解决方案--------------------
if((n=0)||(n=1))
return 1;
应该是 if (n == 1 || 1 == n)

------解决方案--------------------
if((n==0)||(n==1))
原条件写成赋值、始终为真