Advertisement

Python常用算法思想及递归算法实现与代码解析

阅读量:

递归算法具有能力将复杂的问题层层拆分为相同类型的子问题,并通过逐一解决这些子问题最终目标是为了彻底解决问题。下面将围绕包括阶乘、汉诺塔等在内的六个典型递归算法展开详细讲解:

一、解决“阶乘”问题

卡曼(Christian Kramp, 1760~1826)于 1808 年发明了一种运算符号称为阶乘(factorial),它是所有小于及等于某个正整数的所有正整数连乘的结果,并且特别规定零的阶乘为一。自然数n的阶乘以n!的形式表示。

其可以用递归的方式定义为:0! = 1;对于所有正整数n则有n! = (n-1)! \times n

N的阶乘就是N*fact(N-1),具体代码如下:

def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)

测试

num = 5
print(f"{num}的阶乘是:{factorial(num)}")

二、解决“汉诺塔”问题

源自一个印度古老传说。其大意是:古寺内有三根木棒(通常被称为A、B、C),其中的一根木

全部评论 (0)

还没有任何评论哟~