Python 递归点

Python 递归点,python,recursion,Python,Recursion,有递归的有用例子吗? 我开始学习递归,遇到了一个将递归用于数字阶乘的例子 def factorial(num): if num == 1: return 1 else: return num * factorial(num - 1) 然而,它可以在没有递归的情况下完成,并且在计时时会更快 def fact(num): lst = [] number = num for i in range(1,num):

有递归的有用例子吗? 我开始学习递归,遇到了一个将递归用于数字阶乘的例子

def factorial(num):
    if num == 1:
        return 1
    else:
        return num * factorial(num - 1)
然而,它可以在没有递归的情况下完成,并且在计时时会更快

def fact(num):
    lst = []
    number = num
    for i in range(1,num):
        lst.append(i)
    for i in lst:
        number = number * i   
    return number

这一点通常是为了简单。是的,为了提高运行时间,您可以将它们转换为迭代版本,但这会使它们的可读性大大降低

这条线索很好地概括了这一点:

我完全同意您的观点,递归的阶乘示例可以被更简单、更快的迭代版本所取代。其他递归算法——像quicksort或mergesort这样的递归排序算法,像深度优先搜索或中间值中值这样的递归搜索算法,以及像用于解数独的回溯搜索——更难转化为迭代解。独立地,学习递归思考是训练自己以不同方式看待问题的一个好方法。所以,是的,这是一项有用的技能,尽管我同意你关于阶乘的观点。:-)另一个很好的例子是计算斐波那契数!通过递归比通过迭代方法容易得多。