竞赛
考级
#include <iostream> using namespace std; // 递归函数计算阶乘 int factorial(int n) { if (n == 0 || n == 1) { // 阶乘的基本情况 return 1; } else { return n * factorial(n - 1); // 递归调用 } } int main() { int n; cin >> n; cout << factorial(n) << endl; return 0; }
#include<bits/stdc++.h> using namespace std; int main(){ long long n,sum; cin >> n; sum=n; for(int i=n-1;i>0;i--){ sum=sum*i; } if(n==0){ cout << 1; return 0; } cout << sum; return 0; }
#include<iostream> using namespace std; int main(){ int a; cin>>a; if(a==0){ cout<<"1"; } else{ for(int i=a-1;i>=1;i--){ a=a*i; } cout<<a; } return 0; }
#include<bits/stdc++.h> using namespace std; int n; long long a(int x){ if(x==0){ return 1; }else{ return x*a(x-1); } } int main(){ cin>>n; cout<<a(n); return 0; }
#include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; long long a[101]; a[0]=1,a[1]=1; for(int i=2;i<=n;++i){ a[i]=a[i-1]*i; } cout<<a[n]; return 0; }
解题思路 用递归来完成阶乘这道题目,先要推算出递归函数在调用自己时的公式 就以题目的6为例,我们可以拆分成:6 * 5 * 4 * 3 * 2 * 1 但是为了实现递归中调用自己,也可以写成:6 * (5!) 所以就是n * f(n - 1) 边界条件就是题目中的规定:0!= 1 这就是函数内的内容 代码
递归求阶乘,时间复杂度 O(n)O(n)O(n)
**循环: ** 递归:
#include<bits/stdc++.h> using namespace std; long long f(int n){ if(n0||n1)return 1; return f(n-1)*n; } int main(){ int a; cin>>a; cout<<f(a); return 0; }
#include <iostream> using namespace std; int dfs(int x) { if (x == 0) { return 1; } return x * dfs(x - 1); } int main() { int n; cin >> n; cout << dfs(n); return 0; }
#include<bits/stdc++.h> #define LL long long using namespace std; LL n,x=1; int main(){ cin>>n; for(LL i=n;i>1;i--){ x*=i; } cout<<x; return 0; }
//理解这个好 #include<iostream> using namespace std; int JieCheng(int a){ int b=1; if(a==0){ return 1; } else{ for(int i=1;a+1>i;i++){ b*=i; } return b; } } int main(){ int c; cin>>c; cout<<JieCheng(c); }
#include<bits/stdc++.h> using namespace std; int factorial(int n) { if (n == 0) { return 1; } return n * factorial(n - 1); } int main() { int n; cin >> n; cout << factorial(n); return 0; }
#include<iostream> using namespace std; int f(int n){ if(n<=1) return 1; return n*f(n-1); } int main(){ int n; cin>>n; cout<<f(n); return 0; }
共57条
提交答案之后,这里将显示提交结果~