ZZULIOJ-1048,阶乘表(Python)

文章讲述了如何用Python编写程序,通过for循环计算并打印1到n的阶乘,以示例形式展示过程。

题目描述

输入一个正整数n(n<=20),输出1到n之间阶乘表。

输入

输入只有一个正整数n。

输出

输出1到n之间的阶乘表,格式见输出样例。每行两个数据,第一个数据占4列,第二个数据占20列,左对齐。

样例输入 Copy

5

样例输出 Copy

1   1                   
2   2                   
3   6                   
4   24                  
5   120            

def jkl(n):
    x = 1
    for i in range(1,n+1):
        
        if i <= n:
            x = x*i
    return x
    
y = int(input())
for u in range(1,y+1):
    print("%-4d%-20d"%(u,jkl(u)))


 

Python中,计算阶乘有多种实现方法,以下为你详细介绍: ### 利用循环实现 通过 `for` 循环遍历从1到指定数字的所有整数,并将它们相乘,从而得到阶乘结果。示代码如下: ```python def main(num): a = 1 for i in range(1, num + 1): a *= i return a print(main(10)) ``` 此代码定义了一个 `main` 函数,接收一个整数 `num` 作为参数,在函数内部使用 `for` 循环从1到 `num` 进行遍历,将每个数累乘到变量 `a` 中,最后返回阶乘结果 [^2]。 ### 递归实现 递归是指函数在其定义中调用自身的方法。对于阶乘问题,`n` 的阶乘等于 `n` 乘以 `(n - 1)` 的阶乘。示代码如下: ```python def factorial(n): if n == 0 or n == 1: return 1 else: return n * factorial(n - 1) print(factorial(10)) ``` 在这个代码中,定义了 `factorial` 函数,当 `n` 为0或1时,直接返回1;否则,返回 `n` 乘以 `factorial(n - 1)` 的结果。 ### 使用 `math` 库 Python的 `math` 库提供了 `factorial` 函数,可以直接计算阶乘。示代码如下: ```python import math result = math.factorial(10) print(result) ``` 这段代码导入了 `math` 库,然后使用 `math.factorial` 函数计算10的阶乘输出结果。 ### 利用 `reduce` 函数 `reduce` 函数可以对一个序中的元素进行累积操作。示代码如下: ```python from functools import reduce def factorial_reduce(n): return reduce(lambda x, y: x * y, range(1, n + 1), 1) print(factorial_reduce(10)) ``` 此代码使用 `reduce` 函数和 `lambda` 达式对 `range(1, n + 1)` 中的元素进行累积相乘,初始值为1,最终得到阶乘结果。 ### 尾递归实现 尾递归是一种特殊的递归形式,递归调用是函数的最后一个操作。示代码如下: ```python def tail_factorial(n, accumulator=1): if n == 0: return accumulator else: return tail_factorial(n - 1, n * accumulator) print(tail_factorial(10)) ``` 在这个代码中,定义了 `tail_factorial` 函数,通过一个累加器 `accumulator` 来保存中间结果,每次递归调用时更新 `n` 和 `accumulator` 的值,直到 `n` 为0时返回最终结果。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值