BM62. 斐波那契数列
描述
输入描述
一个正整数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; } };