斐波那契数列

斐波那契数列:0,1,1,2,3,5,8,13,...,求该数列第n项数字。

  • 数列前两个数字 f(1)=0,f(2)=1
  • 数列的每个数字是前两个数字之和

以下是两种不同的方法求第n项数字:循环迭代、递归

python 复制代码
# 斐波那契数列:0,1,1,2,3,5,8,13,......,求该数列第n项数字

# 循环迭代
def fib(n: int) -> tuple:
    """
    斐波那契数列:循环
    :param n: 项数
    :return:
    """
    n1, n2 = 0, 1
    n_list = [n1, n2]
    for item in range(n - 2):
        temp = n2
        n2 = n1 + n2
        n1 = temp
        n_list.append(n2)

    return n2, n_list


# 递归
def fib_plus(n: int) -> int:
    """
    递归
    :param n:
    :return:
    """
    # 终止条件
    if n == 1 or n == 2:
        return n - 1
    # 递归调用
    result = fib_plus(n - 1) + fib_plus(n - 2)
    return result


if __name__ == '__main__':
    num = fib(10)
    print(num)  # (34, [0, 1, 1, 2, 3, 5, 8, 13, 21, 34])

    num = fib_plus(10)
    print(num)   # 34
相关推荐
一行注释1 分钟前
ECharts柱状图横向展示与DataZoom滑动查看实现
开发语言·前端·javascript
喵手8 分钟前
Python爬虫零基础入门【第六章:增量、去重、断点续爬·第1节】增量采集:只抓新增/更新(新手也能做)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·增量、去重·增量采集
Ulyanov20 分钟前
Impress.js深度解析
开发语言·前端·javascript·css3·impress.js
烤麻辣烫23 分钟前
23种设计模式(新手)-9单例模式
java·开发语言·学习·设计模式·intellij-idea
ytttr87324 分钟前
基于MATLAB实现时间序列小波相干性分析
开发语言·matlab
万粉变现经纪人26 分钟前
如何解决 pip install pyodbc 报错 缺少 ‘cl.exe’ 或 ‘sql.h’(ODBC 头文件)问题
数据库·python·sql·网络协议·bug·ssl·pip
资生算法程序员_畅想家_剑魔31 分钟前
Java常见技术分享-设计模式的六大原则
java·开发语言·设计模式
dazzle35 分钟前
Python数据结构(五):队列详解
数据结构·python
翱翔的苍鹰37 分钟前
完整的“RNN + jieba 中文情感分析”项目之一:需要添加添加 JWT 认证
人工智能·python·rnn
0思必得038 分钟前
[Web自动化] 爬虫URL去重
运维·爬虫·python·selenium·自动化