Python Basic - 斐波拉契数列(循环与递归双方法)

示例二:斐波拉契数列

斐波拉契数列百度百科

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
第一项为1
第二项为1
从第三项开始,每个数都是前两个数之和

本实验的思路是生成一个列表,让调用函数的时候输入的实参为数字的时候就生成列表中几个元素。

循环实现

def Fibonacci(x):
    if x == 1:
        sequence = [1]
        return sequence
    elif x == 2:
        sequence = [1,1]
        return sequence
    elif x > 2:
        sequence = [1,1]
        for i in range(2,x):
            sequence.append(sequence[i-1] + sequence[i-2])
        return sequence
    elif x <= 0:
        return "input error,number must grather than 0"

print(Fibonacci(5))
print(Fibonacci(10))
print(Fibonacci(20))
print(Fibonacci(1))
print(Fibonacci(2))
print(Fibonacci(-1))

"""
[1, 1, 2, 3, 5]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
[1]
[1, 1]
input error,number must grather than 0
"""

递归实现

使用递归返回相应下标的数列的值,使用循环求出每个下标的值后放入到列表中,我暂时还没找到更好的方法,后续发现后再行改善

def Fibonacci(x):
    sequence = []
    def subFibonacci(y):
        if y == 1:
            return 1
        elif y == 2:
            return 1
        elif y > 2:
            return subFibonacci(y-1)+subFibonacci(y-2)
    for i in range(1,x+1):
        sequence.append(subFibonacci(i))
    return sequence


print(Fibonacci(5))
print(Fibonacci(10))
print(Fibonacci(20))
print(Fibonacci(1))
print(Fibonacci(2))
print(Fibonacci(-1))

"""
[1, 1, 2, 3, 5]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
[1]
[1, 1]
[]
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值