剑指offer--算法题--10--斐波那契数列与跳台阶


题目描述:

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:

输入:

输入可能包含多个测试样例,对于每个测试案例,

输入包括一个整数n(1<=n<=70)。

输出:

对应每个测试案例,

输出第n项斐波那契数列的值。

样例输入:
3
样例输出:
2

跳台阶

题目描述 
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

思路: f(1) = 1, f(2) = 2, f(n) = f(n - 1) + f(n - 2)

package jzoffer;

import java.util.Scanner;

public class SolutionFibonacci {
	public static void main(String[] args) {
		System.out.println("你想查找数列的第几项:");
		Scanner sc1 = new Scanner(System.in);
		long a = sc1.nextInt();
		System.out.println(Fibonacci(a));
		System.out.println("你有多少级台阶:");
		Scanner sc2 = new Scanner(System.in);
		long b = sc2.nextInt();
		System.out.println(JumpFloor(b));
	}
	public static int Fibonacci(long n){
		int former = 0;
		int latter = 1;
		if(n == 0) return 0;
		if(n == 1) return 1;
		for(int i =2;i<=n;i++){
			latter += former;
			former = latter -former;
		}
		return latter;
	}
	public static int JumpFloor(long target) { //跳台阶也是个数列问题
        int former = 1;
        int latter = 2;
        if (target == 0) return 0;
        if (target == 1) return 1;
        if (target == 2) return 2;
        for (int i = 3; i <= target; i ++) {
            latter += former;
            former = latter - former;
        }
        return latter;
    }
}


猜你喜欢

转载自blog.csdn.net/lsm18829224913/article/details/80304765
今日推荐