斐波那契数列

斐波那契数列: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
相关推荐
2501_914245931 天前
SQL在GROUP BY中如何保留非聚合列_配合ANY_VALUE或窗口函数
jvm·数据库·python
A7bert7771 天前
【YOLOv8部署至RDK X5】模型训练→转换bin→Sunrise 5部署
c++·人工智能·python·深度学习·yolo·机器学习
weixin_580614001 天前
如何防止SQL注入篡改数据_实施双重身份验证与授权
jvm·数据库·python
2401_897190551 天前
SQL视图占空间吗_理解视图定义与存储机制的底层逻辑
jvm·数据库·python
qq_424098561 天前
C#怎么实现UDP广播通信_C#如何搭建Socket网络【核心】
jvm·数据库·python
2501_914245931 天前
Python Web开发如何防范SQL注入_使用参数化查询与ORM实践
jvm·数据库·python
yejqvow121 天前
Golang怎么做模糊测试fuzz_Golang Fuzz测试教程【高效】
jvm·数据库·python
2401_897190551 天前
mysql如何通过mysqldump备份视图与触发器_使用相关参数
jvm·数据库·python
好运的阿财1 天前
OpenClaw工具拆解之subagents+gateway
python·机器学习·ai·ai编程·openclaw·openclaw 工具
加号31 天前
C# 基于MD5实现密码加密功能,附源码
开发语言·c#·密码加密