题目来源
求阶乘 - 洛谷https://www.luogu.com.cn/problem/U90538代码:(此题较为简单,为20以内的阶乘)
递归方法:
//洛谷 U90538 求阶乘 AC 2022 01 26
//递归方法
#include<bits/stdc++.h>
using namespace std;
long long kkk(long long n){
//当这个数为 0 时, 直接返回 0 的值
//此题中无考察此点
if(n==0) return 0;
//递归的底
if(n==1) return 1;
//一个数的阶乘 = 这个数本身 * 小于这个数的阶乘 ( 这个数要 > 1 )
return kkk(n-1)*n;
}
int main(){
long long n;
cin>>n;
//使用递归函数
cout<<kkk(n);
return 0;
}
以上为递归
递推方法:
//洛谷 U90538 求阶乘 AC 2022 01 26
//递推方法
#include<bits/stdc++.h>
using namespace std;
//放在主函数外的数,初始化为 0
long long sum;
int main(){
int n;
cin>>n;
//先考虑 n=0 的情况
if(n==0){
cout<<"0";
//return 代表程序的结束
return 0;
}
sum=1;
for(int i=1;i<=n;i++){
sum=sum*i;
}
cout<<sum;
return 0;
}
要是不会 return 也可以写成:
//洛谷 U90538 求阶乘 AC 2022 01 26
//递推方法
#include<bits/stdc++.h>
using namespace std;
//放在主函数外的数,初始化为 0
long long sum;
int main(){
int n;
cin>>n;
//先考虑 n=0 的情况
if(n==0){
cout<<"0";
}
else{
sum=1;
for(int i=1;i<=n;i++){
sum=sum*i;
}
cout<<sum;
}
return 0;
}
这样就好理解了吧