菲波那切数列: 青蛙跳台阶 问题

斐波那契数列(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;

}

你可能感兴趣的:(菲波那切数列: 青蛙跳台阶 问题)