斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
菲波那切数列在java中主要体现在 递归方面:
下面是 牛客网 的试题:
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:
n = 1; 只有一种跳法。
n = 2;有2中跳法。
n=3时。
假如第一次跳一个台阶,那么剩下的就是f(n-1);假如第一次跳2个台阶,就剩下f(n-2);第一次跳3个台阶,就剩下f(n-3),也就是f(n-n)中跳法。
n=4时。
f(n)=f(0)+f(1)+ ...... +f(n-2)+f(n-1) => f(n)=f(n-n)+f(n-n+1)+ ...... +f((n-1)-1)+f(n-1);
f(n-1)=(0))+... +f((n-1)-1);
即: f(n)=2*f(n-1);
具体实现:
public int jump(int target){
if(target <= 0)
return -1;
if(target ==1)
return 1;
return jump(target-1) *2;
}