Python计算斐波那契数列


1. 知识储备🗂

斐波那契数列(Fibonacci sequence),又称黄金分割数列。因意大利数学家Leonardo Fibonacci以兔子繁殖为例子而引入,故又称为“兔子数列”
指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

在数学上,斐波那契数列被以递推的方法定义:
F(1) = 1,F(2) = 1, F(n) = F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)


2. 几种情形🏞

2.1 求n个斐波那契数(核心❤️)

运行效果

请输入数字:1010个斐波那契数:55

2.1.1 方法一:使用for循环

num = int(input('请输入数字:'))


def fib1(n):
    a, b = 1, 1
    for j in range(n - 1):			# ♻️
        a, b = b, a + b
    return a


print('第{}个斐波那契数:{}'.format(num, fib1(num)))		

2.1.2 方法二:使用递归

num = int(input('请输入数字:'))


def fib2(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fib2(n - 1) + fib2(n - 2)
  
        
print('第{}个斐波那契数:{}'.format(num, fib2(num)))		

2.2 求n个斐波那契数

思路:在上方函数的基础上加上一个for循环即可

运行效果(格式化输出)

请输入数字:1414个斐波那契数为:
       1       1       2       3       5
       8      13      21      34      55
      89     144     233     377

实现代码🧑🏻‍💻:

num = int(input('请输入数字:'))


# 直接使用上面提到的fibonacci函数
def fib1(n):
    a, b = 1, 1
    for j in range(n - 1):
        a, b = b, a + b
    return a


if num <= 0:
    print('无效的输入!')
else:
    print('前{}个斐波那契数为:'.format(num))
    for i in range(1, num + 1):
        print('{:8}'.format(fib1(i)), end='')    # 格式化输出,每个结果占8位
        if i % 5 == 0:							 # 每输出5个,换一行
            print()										

2.3 求大于某个数num的最小斐波那契数

运行效果✨:

请输入数字:128
大于128的最小Fibonacci数是: 144
它是数列中的第12个数

实现代码🧑🏻‍💻:

num = int(input('请输入数字:'))


# 直接使用上面提到的fibonacci函数
def fib2(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fib2(n - 1) + fib2(n - 2)


if num <= 0:
    print('无效的输入!')
else:
    for i in range(1, num + 1):
        if fib2(i) > num:
            print('大于{}的最小斐波那契数是: {}\n它是数列中的第{}个数'.format(num, fib2(i), i))
            break

相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值