算法题/递归
来源:互联网 发布:scratch创意编程 pdf 编辑:程序博客网 时间:2024/06/06 05:52
环境:python2.7
1.递归求和1+2+3+…..+n
思想:f(1) = 1
f(2) = f(1)+2
f(3) = f(2)+3
.
.
.
f(n) = f(n-1)+n
def add(n): if n==1: return 1 else: return(add(n-1)+n)print(add(100))
结果:5050
2.递归求n! = n * (n-1) * (n-2) * …* 1(n>0)
f(1) = 1
f(2) = 1*2
f(3) = 1*2 *3
.
.
.
f(n) = f(n-1)*n
3.斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……
f(1)= 1
f(2) = 1
f(3) = f(1)+f(2)
.
.
.
f(n) = f(n-1)+f(n-2)
def fibo(n): if n==1 or n==2: return 1 else: return(fibo(n-1)+fibo(n-2))print(fibo(8))
4.兔子问题:一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?
第一个月后,一对新兔子变老兔子
n = 1 —》 1(老兔子)
第二个月后,老兔子变老兔子,并且生下一对新兔子
n = 2 —》 1(老兔子)+ 1(新兔子)
第三个月后,老兔子变老兔子,并且生下一对新兔子,上个月的新兔子也变成老兔子
n = 3 —》 1(老兔子) + 1(新兔子)+ 1(老兔子)
。。。。。。
n = 4 1(老) 1(新) 1(老) 1(老) 1(新)
.
.
1,2,3,5,8,13,21……
类似于菲波那切数列
5.汉诺塔问题:汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?
思路:a中有n个盘子,要移动到c中
1.将a上方n-1个盘子,借助c移动到b
2.将a中第n个盘子从a移动到c
3.将b中n-1个盘子借助a移动到c
找到hano的数学表达式,其中,n-1,a,b,c为其参数。汉诺塔中有递归和迭代。
hano(1,,a,b,c) = move(1,a,c)
hano(2,a,b,c) = hano(2-1,a,c,b)
move(2,a,c)
hano(2-1,b,a,c)
hano(3,a,b,c) = hano(3-1,a,c,b)
move(3,a,c)
hano(3-1,b,a,c)
.
.
.
.
hano(n,a,b,c) = hano(n-1,a,c,b)
move(n,a,c)
hano(n-1,b,a,c)
def move(n,a,c): print('%d'%n,'---%s'%a,'----%s'%c)def hano(n,a,b,c): if n == 1: move(n,a,c) else: hano(n-1,a,c,b) move(n,a,c) hano(n-1,b,a,c)print(hano(3,'a','b','c'))
对于递归问题解决思路是找到一个关于f(n)和f(n-1)的数学表达式
- 递归算法题
- 递归算法题
- 递归算法简单题
- 递归算法题1
- 递归算法题2
- 算法题/递归
- 递归算法题
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- Mysql 查看连接数,状态
- 使用U盘作为启动盘重装系统
- git迁移远程仓库后报错的解决办法
- codevs 开关灯
- 批处理文件——多个QQ一键登录
- 算法题/递归
- Java设计模式之观察者模式
- 如何检索自然语言处理领域相关论文
- 各种程序配置与安装方法
- 添加服务,属性列表不显示添加的服务?
- PE文件格式详解(4)
- 基于Swift的iOS应用程序开发:字符串String与Data数据类型相互转换
- 【mybatis】--mapper代理实现dao
- RAID阵列实验