P5739

HighPerformanceRobot

2019-12-22 17:50:46

Solution

### 标准解法 我们可以用循环来做,从i枚举到n,依次将ans*=i。 代码: ```cpp #include<bits/stdc++.h> using namespace std; int n,ans=1; int main() { ios::sync_with_stdio(0); cin>>n; for(int i=1;i<=n;i++) ans*=i; cout<<ans<<endl; return 0; } ``` ### 挑战解法 题目中说了,挑战不用循环来做,怎么办? 递归! 递归层数即为当前的i,每递归一层就将i+1(这里变量我用x,不是i)。 代码: ```cpp #include<bits/stdc++.h> using namespace std; int n; int dfs(int x,int sum) { return x>=n?sum:dfs(x+1,sum*(x+1)); } int main() { ios::sync_with_stdio(0); cin>>n; cout<<dfs(1,1)<<endl; return 0; } ```