C语言递推求解.ppt

C语言递推求解.ppt

ACM程序设计 福州大学至诚学院 冯新 第五讲 递推求解 先来看一个超级简单的例题: 有5人坐在一起,当问第5个人多少岁,他说比第4个人大2岁,问第4个人多少岁,他说比第3个人大2岁,依此下去,问第一个人多少岁,他说他10岁,最后求第5个人多少岁? 显然可以得到如下公式: Fibnacci 数列: Fibnacci 数列: Fibnacci 数列: 简单思考题: 在一个平面上有一个圆和n条直线,这些直线中每一条在圆内同其他直线相交,假设没有3条直线相交于一点,试问这些直线将圆分成多少区域。 我们先来看一下N条相交的直线最多能把平面分割成几块。 是不是这个—— F(1)=2; F(n) = F(n-1)+n; 太简单了? 例:(2050)折线分割平面 问题描述: 平面上有n条折线,问这些折线最多能将平面分割成多少块? 样例输入 1 2 样例输出 2 7 例:(2050)折线分割平面 我们不忙着解这道题。我们先来看一下N条相交的直线最多能把平面分割成几块。 例:(2050)折线分割平面 我们再来看看,每次增加的不是一条直线,而是两条相互平行的线,那又如何呢? 例:(2050)折线分割平面 再来看如果把每次加进来的平行边让它们一头相交,情况又如何呢? 思考:如何用递推解决? 另外一种结论: Zn = 2n ( 2n + 1 ) / 2 + 1 - 2n = 2 n

文档评论(0)

1亿VIP精品文档

相关文档