每日一题 【每日一题】实现一个斐波那契数列-Python-20210823

Jack · 2021年08月23日 · 最后由 lework 回复于 2021年12月09日 · 64 次阅读
本帖已被设为精华帖!
  1. 问题描述:斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,第 0 项是 0,第 1 项是第一个 1。从第三项开始,每一项都等于前两项之和。
Jack 将本帖设为了精华贴 08月23日 21:58

参考代码:

import numpy as np

#方法 1
def fib_matrix(n):
    for i in range(n):
        res = pow((np.matrix([[1, 1], [1, 0]], dtype='int64')), i) * np.matrix([[1], [0]])
        print(int(res[0][0]))
# 调用
fib_matrix(50)

#方法 2
# 使用矩阵计算斐波那契数列
def Fibonacci_Matrix_tool(n):
    Matrix = np.matrix("1 1;1 0", dtype='int64')
    # 返回是matrix类型
    return np.linalg.matrix_power(Matrix, n)

def Fibonacci_Matrix(n):
    result_list = []
    for i in range(0, n):
        result_list.append(np.array(Fibonacci_Matrix_tool(i))[0][0])
    return result_list
package main

import "fmt"

func fib(n int) int {
    // 递归实现

    if n < 2 {
        return n
    } else {
        return fib(n-1) + fib(n-2)
    }
}

func main() {
    /*
    问题描述:斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,第 0 项是 0,第 1 项是第一个 1。从第三项开始,每一项都等于前两项之和。
    */

    var (
        n = 10
        a []int
    )

    for i := 0; i < n; i++ {
        a = append(a, fib(i))
    }

    fmt.Println(a)
}

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册