题解:P5739 【深基7.例7】计算阶乘
题目传送门
题目分析
基本思路
本题要求计算
实现细节
首先我们要了解什么是函数。我们之前学过循环,部分程序段需要反复执行时可以使用循环。但是在一些情况下,我们无法通过循环来减少工作量。这时候我们就要使用函数了。
函数定义的语法形式
数据类型 函数名(形式参数表)
{
函数体;
}
注意事项:
- 函数的数据类型指函数的返回值类型(如果类型为
void,表示无返回值) - 形式参数表可以为空。
- 函数不允许嵌套定义!
递归函数
当函数的定义中,其内部操作有直接或间接地出现对自身的调用,则称这样的程序嵌套地定义为递归定义。
递归通常将一个大问题层层转化为多个小问题来进行求解,大大减小了程序的代码量。
例如本题的求阶乘,就可以用下面的递归式表示:
- 当
x 为0 时,f(x) = 1 。 - 当
x > 0 时,f(x) = f(x - 1) \times x 。
代码实现
#include <bits/stdc++.h>
using namespace std;
int f(int x)
{
if (x == 0)
return 1;
return f(x - 1) * x;
}
int n;
int main()
{
cin >> n;
cout << f(n) << endl;
return 0;
}