例题2-9 求N的阶乘

作者 颜晖

单位 浙大城市学院

本题要求编写程序,计算N的阶乘。

输入格式:

输入在一行中给出一个非负整数N(0≤N≤21)。

输出格式:

在一行中按照“product = F”的格式输出阶乘的值F,请注意等号的左右各有一个空格。题目保证计算结果不超过双精度范围。

输入样例:

5

输出样例:

product = 120

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

代码如下:

#include <stdio.h>

int main() 
{
    int N;
    double product = 1.0;
    scanf("%d", &N);
    for (int i = 1; i <= N; i++) 
    {
        product *= i;
    }
    printf("product = %.0f\n", product);
    return 0;
}

流程图如下:

### Python 计算阶乘的多种方式 #### 使用 `math.factorial` 函数 Python 的标准库提供了非常便捷的方式来计算阶乘,即通过导入 `math` 模块并调用其中的 `factorial` 方法。 ```python import math def factorial_math(n): return math.factorial(n) print(factorial_math(5)) # 输出应为120 ``` 此方法简单高效,适用于大多数场景下的需[^1]。 #### 利用 `reduce` 函数配合匿名函数实现 另一种较为优雅的做法是利用 functools 库中的 reduce 函数结合 lambda 表达式完成阶乘运算: ```python from functools import reduce def factorial_reduce(n): if n == 0 or n == 1: return 1 else: return reduce(lambda x, y: x*y, range(1, n+1)) print(factorial_reduce(5)) # 输出也应该是120 ``` 这种方法不仅展示了 Python 中高阶函数的魅力,同时也提供了一种不同于传统迭代或递归的新思路。 #### 循环结构手写阶乘逻辑 当不想依赖额外模块时,可以采用简单的循环语句来自行构建阶乘功能。这种方式直观易懂,适合初学者学习理解。 ```python def factorial_loop(n): result = 1 for i in range(1, n + 1): result *= i return result print(factorial_loop(5)) # 同样会得到120的结果 ``` 这段代码清晰地表达了累乘的过程,易于调试和维护[^3]。 #### 递归版本的手动实现 最后一种常见的做法就是运用递归来解决问题,在数学上这往往是最贴近定义的形式之一。 ```python def factorial_recursive(n): if n <= 1: return 1 else: return n * factorial_recursive(n - 1) print(factorial_recursive(5)) # 结果依旧是120 ``` 需要注意的是,虽然递归看起来很漂亮,但对于较大的输入可能会遇到栈溢出的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值