《云计算全栈》-python篇:python实现斐波那契数列的三种写法

Echo ·
更新时间:2024-05-16
· 776 次阅读

1 案例1:斐波那契数列
1.1 问题

编写fib.py脚本,实现以下目标:

斐波那契数列就是某一个数,总是前两个数之和,比如0,1,1,2,3,5,8
使用for循环和range函数编写一个程序,计算有10个数字的斐波那契数列
改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列
123

1.2 方案

本题主要是for循环语句,写法有如下两种:

1.输入一个变量确定列表长度,for循环用内置函数range确定循环次数,利用切片方法将列表fib最后两数之和追加到列表中,每循环一次追加一个值

2.for循环用内置函数range确定循环次数,每循环一次执行:将变量b的值赋值给变量a,并且将a b之和赋值给b,此时,a的新值是前一个b的值,b的新值是前面a b之和,让a成为数列中的值
1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:编写脚本

[root@localhost day03]# vim fib.py
#!/usr/bin/env python3
a, b = 0, 1
for i in range(10):
    print(a)
    a, b = b, a + b
123456

或将上面的代码改为以下写法:

[root@localhost day03]# vim fib2.py
#!/usr/bin/env python3
fib = [0, 1]
l = int(input("数列长度: "))
for i in range(l - 2):
    fib.append(fib[-1] + fib[-2])
print(fib)
1234567

或将上面的代码改为以下写法:

[root@localhost day03]# vim fib_func.py
#!/usr/bin/env python3
def gen_fib(l):
    fib = [0, 1]
    for i in range(l - len(fib)):
        fib.append(fib[-1] + fib[-2])
    return fib  # 返回列表,不返回变量fib
a = gen_fib(10)
print(a)
print('-' * 50)
n = int(input("length: "))
print(gen_fib(n))  # 不会把变量n传入,是把n代表的值赋值给形参
123456789101112

步骤二:测试脚本执行

[root@localhost day03]# python3 fib.py
0
1
1
2
3
5
8
13
21
34
[root@localhost day03]# python3 fib2.py
数列长度: 9
[0, 1, 1, 2, 3, 5, 8, 13, 21]
[root@localhost day03]# python3 fib_func.py 
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
--------------------------------------------------
length: 9
[0, 1, 1, 2, 3, 5, 8, 13, 21]
12345678910111213141516171819
                                
发布了404 篇原创文章 · 获赞 56 · 访问量 4万+

作者:Wang cheng zhi



斐波那契数列 斐波那契 云计算 Python

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