题解:P5739 【深基7.例7】计算阶乘

· · 题解

题目传送门

题目分析

基本思路

本题要求计算 n!,但题目要求不使用循环来完成此题,那我们可以尝试递归。

实现细节

首先我们要了解什么是函数。我们之前学过循环,部分程序段需要反复执行时可以使用循环。但是在一些情况下,我们无法通过循环来减少工作量。这时候我们就要使用函数了。

函数定义的语法形式

数据类型 函数名(形式参数表)
{
    函数体;
}

注意事项

递归函数

当函数的定义中,其内部操作有直接或间接地出现对自身的调用,则称这样的程序嵌套地定义为递归定义

递归通常将一个大问题层层转化为多个小问题来进行求解,大大减小了程序的代码量。

例如本题的求阶乘,就可以用下面的递归式表示:

代码实现

#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;
}