数据结构和算法

咱们昨天给了一个青蛙跳台阶的题,和一个参考答案,今天我们详细的讲一下。

f(1)=1

f(2)=f(2-1)+f(2-2)

f(3)=f(3-1)+f(3-2)+f(3-3)

以此类推....

到n个台阶的时候f(n)=f(n-1)+f(n-2)+f(n-3)+...+f(n-(n-1))+f(n-n)——①

当n=1的时候,只有一种跳法,当n=2的时候,有一次跳一阶或者两阶两种方法,以此类推

当n=n的时候,f(n)=f(n-1)+f(n-2)+f(n-3)+...+f(n-(n-1))+f(n-n)

那么n=n-1的时候呢?

f(n-1)=f(0)+f(1)+f(2)+f(3)+...+f((n-1)-1)=f(0)+f(1)+f(2)+f(3)+...+f(n-2)——②

比较①②,可以得出:f(n)=2*f(n-1)

然后我们总结一下:一次有1、2、...n阶的跳的方式时,总得跳法为:

当n=0或者n=1的时候,f(n)=1,当n≥2时,f(n)=2*f(n-1)。

这种思想比较好理解,但是当n取很大的时候,往往这种效率会降低,那么有没有更好的办法呢?

这里给出一种,我们假如再每一个台阶都放上一个虫子,青蛙蹦上一个台阶就默认吃掉虫子,让青蛙跳上去,n个台阶有n只虫子(细思恐极),最后一只虫子位于第n阶,是青蛙到达的位置,必须要有一只虫子,其他n-1个台阶就可以随意的设置有没有虫子给青蛙吃了,每一个台阶虫子存不存在有两种可能,,n-1个虫子就有2^(n-1)种(因为最后一个台阶必须存在),然后我们就可以直接得到结果了。

明天我们继续数据结构与算法教程,我们先来讲一下,学习数据结构与算法,需要哪些数学知识来支撑,今天就到这里,喜欢的点个赞。

喜欢我就点我吧

赞赏

人赞赏









































白癜风治疗最好的医院
刘云涛



转载请注明:http://www.92nongye.com/hxjs/204618508.html