python: 递归函数:阶乘
一,认识递归函数
1,什么是递归?
递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,
否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,
直到问题无法分解为止
2,什么是递归函数:
递归函数(recursive function)是指在函数体中可以调用自己的函数
3,语法
def fn():
    # ...
    if condition:
        # 停止自我调用
    else:
        fn()
    # ...
4,递归函数的优点和缺点
递归函数的优点:它们可以帮助程序员在处理复杂问题时提供一种简单且易懂的解决方案。
递归函数使代码具有可读性和可重用性,
而且可以使用递归函数解决使用其他方法难以处理的问题。
递归函数的缺点: 递归函数可能会在运行时占用较多的系统资源,
因为它们需要在堆栈上存储多个函数调用
其次,递归函数可能导致代码变得不容易理解,
因为它具有一定的复杂度
二,阶乘
1,什么是阶乘?
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。
自然数n的阶乘写作n!。
2,例子:
5! = 1 x 2 x 3 x 4 x 5
说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/06/python-di-gui-han-shu-jie-cheng/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com
三,应用:
1,使用递归计算阶乘
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
def factorial(n):    if n == 1:  # 正确的返回添加(结束条件)        return 1    else:        return n * factorial(n - 1)  # 调用自身函数的行为num = 5res = factorial(5)print(f"{num} 的阶乘是 {res}") | 
运行结果:
5 的阶乘是 120
2,不使用递归方式,用while循环解决
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
num = 5  # 数字factorial = 1  # 阶乘的最终结果i = 1  # 计数器while i <= num:    factorial *= i    i += 1print(f"{num} 的阶乘是 {factorial}") | 
运行结果:
5 的阶乘是 120
3,不使用递归方式,用for循环解决
| 
 1 
2 
3 
4 
5 
6 
 | 
n = 5     # 要计算阶乘的数字factorial = 1    # 阶乘的最终结果for i in range(1, n + 1):    factorial *= iprint(f"{n} 的阶乘是 {factorial}") | 
运行结果:
5 的阶乘是 120
                    
                
                
            
        
浙公网安备 33010602011771号