边写边学Python(6)斐波那契数列

题目:斐波那契数列。

程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。

在数学上,费波那契数列是以递归的方法来定义:

F0 = 0     (n=0)
F1 = 1    (n=1)
Fn = F[n-1]+ F[n-2](n=>2)

代码:

#!/usr/bin/python

#定义斐波那契数列
def fib(n):
    a,b = 0,1
    for i in range(n-1):
        a,b = b,a+b
    return a
# 输出了第10个斐波那契数列
print (fib(10))

运用递归:

#!/usr/bin/python
 
# 使用递归
def fib(n):
    if n==1:
        return 0
    if n==2 or n==3:
        return 1
    return fib(n-1)+fib(n-2)
# 输出了第10个斐波那契数列
print (fib(10))

输出指定个数的斐波那契数列:

#!/usr/bin/python
 
def fib(n):
#前两项的值单独定义
    if n == 1:
        return [1]
    if n == 2:
        return [1, 1]
#大于三项的情况,先创建一个含有前两项的列表
    fibs = [1, 1]
    for i in range(2, n):
        fibs.append(fibs[-1] + fibs[-2])
    return fibs
 
# 输出前 10 个斐波那契数列
print (fib(10))

输出结果:

输入个数:10
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

但是上述代码未考虑到输入个数为负数的情况,输入为负数仍然可以输出。

所以,下面是完善的代码

#!/usr/bin/python

def fib(n):
    if n <= 0:
        print('请输入一个正数。')
#前两项的值单独定义
    if n == 1:
        return [0]
    if n == 2:
        return [0, 1]
#大于三项的情况,先创建一个含有前两项的列表
    if n > 2 :
        fibs = [0, 1]
        for i in range(2, n):
            fibs.append(fibs[-1] + fibs[-2])
        return fibs 
# 输出前 n 个斐波那契数列
n = int(input('输入个数:'))
print (fib(n))

输出结果:

输入个数:-3
请输入一个正数。
None
输入个数:10
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 我可以尝试为你写一个python斐波那契数列的代码:def fib(n): if n <= 1: return n else: return (fib(n-1) + fib(n-2))n = int(input("请输入你想要的斐波那契数列的长度: "))print("斐波那契数列的结果是:") for i in range(n): print(fib(i)) ### 回答2: 斐波那契数列是指每个数字都是前两个数字之和的数列,起始两个数字通常为0和1。以下是编写斐波那契数列Python代码: ```python def fibonacci(n): if n <= 0: print("请输入大于0的整数") elif n == 1: return 0 elif n == 2: return 1 else: fib_list = [0, 1] # 前两个数字为0和1 for i in range(2, n): fib_list.append(fib_list[i-1] + fib_list[i-2]) # 添加下一个数字到列表中 return fib_list # 使用示例 n = int(input("请输入要计算的斐波那契数列的数量:")) result = fibonacci(n) print("斐波那契数列的前", n, "个数字为:", result) ``` 运行该代码,将提示输入要计算的斐波那契数列的数量,然后输出指定数量的斐波那契数列数字。例如,如果输入5,将输出斐波那契数列的前5个数字:[0, 1, 1, 2, 3]。 ### 回答3: 斐波那契数列是一个经典的数列,定义为每个数都是前两个数之和,如0、1、1、2、3、5、8、13、21、34、……以此类推。下面是一个用Python编写的计算斐波那契数列的程序: ```python def fibonacci(n): sequence = [] # 用于存储斐波那契数列的序列 # 处理特殊情况:若n小于等于0,返回空的序列 if n <= 0: return sequence # 将数列的前两位加入序列 a, b = 0, 1 sequence.append(a) sequence.append(b) # 从第3个数开始迭代计算,并将计算结果加入序列 for i in range(2, n): c = a + b sequence.append(c) a, b = b, c return sequence # 测试示例 n = 10 # 指定斐波那契数列的长度 result = fibonacci(n) print(result) ``` 上述代码使用了迭代的方式计算斐波那契数列,通过指定n的值来控制数列的长度,并将计算结果存储在一个列表中。运行代码后,将会输出长度为10的斐波那契数列:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

isxhyeah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值