这里有新鲜出炉的 Python3 官方中文指南,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要介绍了 python 递归函数和河内塔问题, 非常不错,具有参考借鉴价值,需要的朋友可以参考下
关于递归函数:
函数内部调用自身的函数。
以 n 阶乘为例:
f(n) = n ! = 1 x 2 x 3 x 4 x...x(n-1)x(n) = n x (n-1) !
- def factorial(n):
- if n==1:
- return 1
- return n * f(n-1)
// 调用过程如下:
- >>f(5)
- >>5 * f(4)
- >>5 * 4 * f(3)
- >>5 * 4 * 3 * f(2)
- >>5 * 4 * 3 * 2 * f(1)
- >>5 * 4 * 3 * 2 * 1
- >>120
从上面的例子可以直观得看到递归函数在不断的调用自己的函数,直到 n==1(函数出口)。
关于河内塔:
规则:
1. 三根柱子,A,B, C
2. A 柱子上的盘子从小到大 排列,最上面的是最小的,最下面的是最大的。
3. 将 A 上的盘子移动到 C 上,移动过程中始终保持,最大的在下面,最小的在上面。
假设 A 柱子上有一个盘子,可以直接从 A 移动到 C 完成:
A --> C
假设 A 柱子上有两个盘子,需要借助 B,移动到 C:
A --> B
A --> C
B --> C
将 A 最上面的盘(2-1)移动到 B,然后将 A 中剩下一块盘移动到 C,最后将 B 中的盘移动到 C
假设 A 柱子上有三个盘子,需要借助 B 移动 A 上面的两个盘,然后将 A 剩下最大的盘移动到 C,最后将 B 中的盘移动到 C。
A --> C
A --> B
C --> B // 这三步将 A 上前两个盘子移动到 B
A --> C // 这一步将 A 上最大的盘子移动到 C
B --> A
B --> C
A --> C // 后面这三步将 B 上的盘子移动到 C
原理是将 A 上的 (n-1) 块盘移动到 B,然后 A 中剩下的,也是最大的一块盘移动到 C,最后将 B 上(n-1)块盘移动到 C。
- def Hanoi(n , a, b, c):
- if n==1:
- print (" Hanoi Tower move", a, "-->", c)
- return
- Hanoi(n-1, a, c, b)
- Hanoi(1, a, b, c)
- Hanoi(n-1, b, a, c)
- print (" When there is 1 ring on A")
- Hanoi(1, 'A', 'B', 'C')
- print (" When there are 2 rings on A")
- Hanoi(2, 'A', 'B', 'C')
- print (" When there are 3 rings on A")
- Hanoi(3, 'A', 'B', 'C')
- print(" When there are 4 rings on A")
- Hanoi(4, 'A', 'B', 'C')
以上所述是小编给大家介绍的 python 递归函数和河内塔问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/17/0525/334308.html