一定是更博上瘾哈哈哈哈哈哈,今天居然连发两篇~不愧是我,哈!
终于我也可以自信地说掌握了递归 还是有点不敢,毕竟递归还是有难题的,甚至到无法理解的程度。不过今天悟了点东西,还是记录下这一系列的问题。免得哪天脑子宕机了又一片空白(此时一只蒟蒻又嘤嘤地枯了起来)
悄悄告诉你一个秘密
能量守恒知道是什么吗?
如果你好好思考的话,脑力可以成倍地代换计算机的时空复杂度
如果无脑递归,到成百的量级机器就叫苦不迭了!更别提上千
突然想起高中的时候,白板上那些函数,老师讲指数爆炸的时候,我居然没有领悟到对数函数的涵养与恭谦,一味地嘲笑这个函数增长也太慢了。事到如今我才发现写出O(lgn)的程序是一件很值得骄傲的事
还有就是老费早已说过了,“学习是一件孤独的事”,还在指望什么呢?还在企盼什么呢?有人陪吗?别说笑了。不要看别人跑得多快,也不要奢求别人和你一起跑。是乌龟,就心无旁骛地爬就完事了。哪里来那么多顾虑?
好了,废话说完了。开始做题。
斐波那契数列
问题描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)(n<=39)
直接放代码,干货都在注释里(顺便说一下我太爱这个界面了)
青蛙跳台阶
问题描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
这题和上题一样的道理,也是斐波那契,就不详解了。
变态青蛙跳台阶
问题描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
也可以跳上n级…看到这里头有点凉。再一看标签,贪心!啊。。我怕了,秒怂。其实dark不必。静下心来找规律。你看上一题,我们如果用递归的思路来解,就是倒着看(这里多说一句从后往前分析似乎是一种聪明的办法),那么这里同样也是倒着看。
f(n)=f(n-1)+f(n-2)+…+f(2)+f(1)
f(n-1)=f(n-2)+f(n-3)+…+f(2)+f(1)
规律不就出来了吗!
f(n)=2×f(n-1);
if(n==1) f(n)=1;
好像这个玩意叫状态转移方程来着,,果然是装×利器。装作很高端的????
再告诉你一句
这题用python写只需要一句
厉害吧!
好了,到此,斐波那契和相关变形基本已经不是问题了。今后要直面贪心还有DP了!果然我是无数次都想搞懂,无数次还是没有搞懂啊!没关系,慢慢爬~