您的位置:首页 > 其它

简谈--递推求解

2014-02-18 11:26 106 查看
先来看一个超级简单的例题:

l有5人坐在一起,当问第5个人多少岁,他说比第4个人大2岁,问第4个人多少岁,他说比第3个人大2岁,依此下去,问第一个人多少岁,他说他10岁,最后求第5个人多少岁?
l如果所坐的不是5人而是n人,写出第n个人的年龄表达式?
显然可以得到如下公式:

F(n)=10(n=1的时候),F(n)=F(n-1)+2  (n>=2的时候)

化简后的公式:

F(n)=10+(n-1)*2

思考:(大家想想这些,要边看边思考哦~~)

递推公式的伟大意义——?
有了公式,人工计算的方法?
常见的编程实现方法?(优缺点?)
太简单了?
来个稍微麻烦一些的—
例: 折线分割平面

问题描述:

  平面上有n条折线,问这些折线最多能将平面分割成多少块?

样例输入

1

2

样例输出

2

7

如何解决?

结论如下:

Zn = 2n ( 2n + 1 ) / 2 + 1 - 2n

  = 2 n^2 – n + 1

总结:递推求解的基本方法:

首先确认,是否能很容易的得到简单情况的解
假设规模为N-1的情况已经得到解决
重点分析:当规模扩大到N时,如何枚举出所有的情况,并且要确保对于每一种子情况都能用已经得到的数据解决。
强调:

  1、编程中的空间换时间的思想

  2、并不一定是从N-1到N的分析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: