python入门五(函数)5-2 python中递归函数
Posted ucas_python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门五(函数)5-2 python中递归函数相关的知识,希望对你有一定的参考价值。
5-2 python中递归函数
Python之递归函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出:
1 fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n
所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理。
于是,fact(n)用递归的方式写出来就是:
1 def fact(n): 2 if n==1: 3 return 1 4 return n * fact(n - 1)
如果我们计算fact(5),可以根据函数定义看到计算过程如下:
1 ===> fact(5) 2 ===> 5 * fact(4) 3 ===> 5 * (4 * fact(3)) 4 ===> 5 * (4 * (3 * fact(2))) 5 ===> 5 * (4 * (3 * (2 * fact(1)))) 6 ===> 5 * (4 * (3 * (2 * 1))) 7 ===> 5 * (4 * (3 * 2)) 8 ===> 5 * (4 * 6) 9 ===> 5 * 24 10 ===> 120
任务
汉诺塔 (http://baike.baidu.com/view/191666.htm) 的移动也可以看做是递归函数。
我们对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为:
如果a只有一个圆盘,可以直接移动到c;
如果a有N个圆盘,可以看成a有1个圆盘(底盘) + (N-1)个圆盘,首先需要把 (N-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的(N-1)个圆盘移动到c。
请编写一个函数,给定输入 n, a, b, c,打印出移动的步骤:
move(n, a, b, c)
例如,输入 move(2, ‘A‘, ‘B‘, ‘C‘),打印出:
A --> B
A --> C
B --> C
以上是关于python入门五(函数)5-2 python中递归函数的主要内容,如果未能解决你的问题,请参考以下文章