1. 程式人生 > >劍指offer-題9:斐波那契數列

劍指offer-題9:斐波那契數列

題目描述

題目一:大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。n<=39

題目二:一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

實驗平臺:牛客網

題目一

在牛客網上,這題只允許迴圈解答,用遞迴會報stackoverflowerror異常,即棧溢位。可以知道遞迴的效率是很低的,時間複雜度是呈指數增長的。

java:

public class Solution {
    public int Fibonacci(int n) {
        int fibonacci1 = 0;
        int
fibonacci2 = 1; int fibonacci = 0; if (n == 0) { return fibonacci1; }else if (n==1) { return fibonacci2; } else { for (int i = 2; i <= n; i++) { fibonacci = fibonacci1 + fibonacci2; fibonacci1 = fibonacci2; fibonacci2 = fibonacci; } return
fibonacci; } } }

python:

# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        fibonacci1 = 0
        fibonacci2 = 1
        if n == 0:
            return 0
        elif n == 1:
            return 1
        else:
            for i in range(2
, n+1): fibonacci = fibonacci1 + fibonacci2 fibonacci1 = fibonacci2 fibonacci2 = fibonacci return fibonacci

題目二

解決思路

這裡寫圖片描述
這裡寫圖片描述

java:

public class Solution {
    public int JumpFloor(int target) {
        int sum1 = 1;
        int sum2 = 2;
        int sum = 0;
        if (target == 1) {
            return sum1;
        } else if (target == 2) {
            return sum2;
        } else {
            for (int i = 2; i < target; i++) {
                sum = sum1 + sum2;
                sum1 = sum2;
                sum2 = sum;
            }
            return sum;
        }
    }
}

python:

照的之前的稍作改動即可