列表

详情


BM62. 斐波那契数列

描述

大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
斐波那契数列是一个满足 的数列
数据范围:
要求:空间复杂度 ,时间复杂度 ,本题也有时间复杂度 的解法

输入描述

一个正整数n

输出描述

输出一个正整数。

示例1

输入:

4

输出:

3

说明:

根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。

示例2

输入:

1

输出:

1

示例3

输入:

2

输出:

1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python 3 解法, 执行用时: 46ms, 内存消耗: 4836KB, 提交时间: 2023-08-12

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param n int整型 
# @return int整型
#
class Solution:
    def Fibonacci(self , n: int) -> int:
        # write code here
        a = 1
        b = 0
        if n < 3:
            return a
        for i in range(1, n):
            c = a
            a += b
            b = c
        return a

Go 解法, 执行用时: 4ms, 内存消耗: 1184KB, 提交时间: 2023-08-12

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @return int整型
*/
func Fibonacci( n int ) int {
    m := map[int]int{1:1, 2:1}
    for i := 3; i < n + 3; i++ {
        m[i] = m[i-2] + m[i-1]
    }
    return m[n]
}

Rust 解法, 执行用时: 2ms, 内存消耗: 400KB, 提交时间: 2021-06-22

struct Solution{

}

impl Solution {
    fn new() -> Self {
        Solution{}
    }

    /**
    * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    * 
        * @param n int整型 
        * @return int整型
    */
    pub fn Fibonacci(&self, n: i32) -> i32 {
        // write code here
        let mut i0 = 0;
        let mut i1 = 1;
        if n > 1{
            let mut goal = 0;
            for i in 0..n-1{
                goal = i0 + i1;
                i0 = i1;
                i1 = goal;
            }
            return goal;
        }
        else if n==0{
            return 0;
        }
        else{
            return 1;
        }
    }
}

C 解法, 执行用时: 2ms, 内存消耗: 428KB, 提交时间: 2022-02-09

/**
 * 
 * @param n int整型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int Fibonacci(int n ) {
    // write code here
    if(n==0)
    return 0;
    if(n==1)
        return 1;
    int fn1=0;
    int fn2=1;
    int fn;
    for(int i=2;i<=n;i++)
    {
        fn=fn1+fn2;
        fn1=fn2;
        fn2=fn;
    }
    return fn;
}

C++ 解法, 执行用时: 2ms, 内存消耗: 552KB, 提交时间: 2022-02-10

class Solution {
public:
    int Fibonacci(int n) {
        vector<int> dp(n + 1);
        dp[1] = 1;
        dp[2] = 1;
        for(int i = 3; i <= n; i++){
            dp[i] = dp[i-1] + dp[i-2];
        }
        return dp[n];
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 616KB, 提交时间: 2022-03-13

class Solution {
public:
    int Fibonacci(int n) {
        if (n == 1 || n == 2)
            return 1;
        int a, b, ret;
        a = 1;
        b - 1;
        for (int i = 2; i < n; ++i)
        {
            ret = a + b;
            a = b;
            b = ret;
        }
        return ret;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 616KB, 提交时间: 2022-03-12

class Solution {
public:
    int Fibonacci(int n) {
        int a=1 , b=1 , c=1;
        if (n==1||n==2) return 1;
        for(int i = 3; i<=n ; i++)
        {
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
};

上一题