//递归:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll fact(int n)
{
if(n==1||n==0) return 1;
return fact(n-1)*n;
}
int main()
{
int n;
cin>>n;
cout<< fact(n) <<endl;
}
非递归
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll fact(int n )
{
ll res=1;
if(n==0) return 1;
for(int i=1;i<=n;i++)
{
res*=i;
}
return res;
}
int main()
{
int n;
cin>>n;
cout<< fact(n) <<endl;
}
通过递归实现阶乘,要明确其递归条件即:fact(n)=fact(n-1)*n;边界条件:当n为0或1时,阶乘的值为1。之后在设计函数实现即可。
通过非递归实现阶乘,可根据阶乘的定义来实现n!=n*(n-1)*(n-2)*...*1,至此我们就可以利用我们学过的for循环或while循环来完成。在这里,我是用for循环来完成的。