前言
阶乘是数学中的一种运算符号,其名为!。对,就叫!。
那它肿么算呢?很简单,从1乘到N就可以了。
递归
递归是一种算法,通常是函数中自己调用自己的算法,和循环差不多,但比循环难许多。
正文
好了,正常人写阶乘是这样的:
#include<bits/stdc++.h>
using namespace std;
int main(){
int ans=1,n; //不能为0,0乘任何数都为0
cin>>n;
for(int i=1;i<=n;i++)ans*=i;
cout<<ans;
return 0;
}
用for循环来从1到n慢慢乘。
要想用递归,我们可以先写伪代码。
#include<bits/stdc++.h>
using namespace std;
long long 函数(这个数){
if(这个数==1)return 1;
else return 这个数*上个数的阶乘;
}
int main(){
long long n;
cin>>n;
cout<<函数(n);
return 0;
}
我们不难发现,当“这个数”是1时,“这个数”的阶乘是1,可以直接返回1。
否则“这个数”的阶乘就是“这个数”*“上个数的阶乘”。
“上个数的阶乘”又是“函数(上个数)”。
就可以得出:
#include<bits/stdc++.h>
using namespace std;
long long jc(long long x){
if(x==1)return 1;
else return x*jc(x-1);
}
int main(){
long long n;
cin>>n;
cout<<jc(n);
return 0;
}
的代码。
本蒟蒻:你学废了吗?
有点赞光速更新!