题目描述
阶乘 n! 可以定义为: n!=n×(n−1)×(n−2)×...×3×2×1n!=n×(n−1)×(n−2)×...×3×2×1
n! 代表从 n 乘到 1 。
如,5!=5×4×3×2×1=1205!=5×4×3×2×1=120
4!=4×3×2×1=244!=4×3×2×1=24
输入格式
输入一个整数n
输出格式
输出 n! 的值
样例
输入数据 1
5
Copy
输出数据 1
120
Copy
数据范围
对于全部的数据,n≤10
题解
学习笔记:
递归是一种在算法和编程中常用的技术,指的是一个函数在执行过程中直接或间接地调用自身的过程。
递归通常包含两个重要的部分:
- 基本情况(Base Case):确定递归的结束条件,即当满足某个条件时,递归函数不再调用自身,直接返回结果。
- 递归步骤(Recursive Step):将原问题分解为规模更小的同类型子问题,并通过调用自身来解决子问题。递归步骤将问题不断缩小,最终达到基本情况的条件。
递归的实现方式通常是通过函数的调用,在每一次递归调用中,问题的规模都会减小,直到达到基本情况后逐层返回结果,最终得到整个问题的解。
递归的优点在于能够简化问题的表达和理解,通过将复杂的问题分解为更小、相似的子问题,使得算法的实现更为直观和简洁。
1.递归
#include<bits/stdc++.h>
using namespace std;
int f(int x){
if(x==1)return 1; // 对应 f(1)=1
return x*f(x-1); // 对应 f(n)=f(n−1)∗n
}
int main(){
int x;
cin >> x;
cout << f(x);
return 0;
}
2.循环
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, d = 1;
cin >> n;
for(int i = 1; i <= n; i++){
d *= i;// 拆开完原式可发现是 1*2*...*n
}
cout << d;
return 0;
}
以上就是本题的题解,谢谢大家的浏览,点个关注吧。