旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾，称之为数组的旋转。输入一个递增排序的一个旋转，输出旋转数组的最小元素。

要理解旋转数组的性质：旋转之后的数组实际上可以划分为两个排序的子数组，而且前面的子数组的元素都大于或者等于后面的子数组的元素。最小的元素刚好是这两个子数组的分界线。要注意特殊情况，必须旋转的度数为0，即未旋转或者数组中有重复数字。
斐波那契数列

写一个函数，输入n, 求斐波那契Fibonacci数列的第n项。f(0) = 0, f(1) = 1, f(n) = f(n - 1) +
f(n - 2).
注意不要用递归，当n很大的时候，重复计算非常多，占用的栈也很多，容易溢出。注意变形，青蛙跳台阶的问题，一次只能跳一个或两个台阶，求到达第n个台阶的方法的个数，实质就是斐波那契数列。还有用2*1的方格来填充2*n的一个矩形的方法，也是斐波那契数列的一种变形。
青蛙跳台阶的变形

之前青蛙只能跳一个或者两个台阶，这里青蛙可以跳1级，2级，...，n级，则该青蛙跳上n级台阶总共有多少中跳法。分析方法和之前跳台阶是一样的。设f(0)
= 1，f(1) = 1, f(2) = f(1) + f(0), f(3) = f(2) + f(1) + f(0),.. , f(n) =
f(n -1) + f(n -2) + ... + f(2) + f(1) + f(0) = f(n - 1) + f(n - 1) =
2f(n - 1), 是一个等比数列，所以f(n) = 2 ^(n -1).
分析方法是这样的，比如跳3级台阶 = 第一步跳1级，剩下的为f(2) + 第一步跳2级，剩下的为f(1) +
第一步跳3级，剩下的为f(0).即为f(3)  = f(2) + f(1) + f(0);