编写一个斐波那契函数
创始人
2024-12-06 09:00:40
0

下面是一个使用递归方法编写斐波那契函数的示例代码:

def fibonacci(n):
    if n <= 0:
        return "Input should be a positive integer."
    elif n == 1:
        return 0
    elif n == 2:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

# 测试斐波那契函数
num = 10
print("斐波那契数列前", num, "个数为:")
for i in range(1, num+1):
    print(fibonacci(i), end=" ")

运行以上代码,将输出斐波那契数列的前10个数:0 1 1 2 3 5 8 13 21 34。

该函数使用递归的方式计算斐波那契数列。当n为1时返回0,当n为2时返回1,否则返回前两个斐波那契数的和。该函数的时间复杂度为O(2^n),因为在计算fibonacci(n)时需要计算fibonacci(n-1)和fibonacci(n-2),而每个函数又会继续递归调用。因此,使用递归方法计算较大的斐波那契数会很慢。

为了提高效率,可以使用迭代方法计算斐波那契数列。以下是一个使用迭代方法编写斐波那契函数的示例代码:

def fibonacci(n):
    if n <= 0:
        return "Input should be a positive integer."
    elif n == 1:
        return 0
    elif n == 2:
        return 1
    
    prev_prev = 0
    prev = 1
    current = 0
    for i in range(3, n+1):
        current = prev_prev + prev
        prev_prev = prev
        prev = current
    
    return current

# 测试斐波那契函数
num = 10
print("斐波那契数列前", num, "个数为:")
for i in range(1, num+1):
    print(fibonacci(i), end=" ")

运行以上代码,将输出斐波那契数列的前10个数:0 1 1 2 3 5 8 13 21 34。

该函数使用迭代的方式计算斐波那契数列。通过使用三个变量prev_prev、prev和current来记录前两个斐波那契数和当前斐波那契数。在每次循环中,计算current,并更新prev_prev和prev的值。该函数的时间复杂度为O(n),计算过程中只进行了一次循环。因此,使用迭代方法计算斐波那契数会更快。

相关内容

热门资讯

wepoke ai辅助!wep... wepoke ai辅助!wepoke可以使用模拟器,wepok软件透明挂,攻略教程(有挂技巧)1、点...
wepoke辅助挂!wepok... wepoke辅助挂!wepoke有插件,wepOkE总是真的有挂,科技教程(有挂细节);玩家必备必赢...
玩家攻略推荐!天天斗牌大联盟麻... 玩家攻略推荐!天天斗牌大联盟麻将(透明挂)好像真的有挂(2021已更新)(哔哩哔哩)1、构建自己的天...
微扑克有辅助挂!微扑克大厅都是... 微扑克有辅助挂!微扑克大厅都是机器人,德州扑克微扑克俱乐部,系统教程(有挂机密)是一款可以让一直输的...
wepokeai机器人!wep... 这是一款非常优秀的WepOke ia辅助检测软件,能够让你了解到WepOke中牌率当中全部隐藏参数,...
揭秘一下!科乐麻将系统规律(透... 揭秘一下!科乐麻将系统规律(透视)原来是有挂(2026已更新)(哔哩哔哩)1、科乐麻将系统规律系统规...
微扑克有辅助挂!微扑克有后台控... 微扑克有辅助挂!微扑克有后台控制(透明挂)原来真的是有挂1、超多福利:超高返利,海量正版游戏,微扑克...
WePoKe外 挂!wopok... 1、WePoKe外 挂!wopoker有外 挂(透明挂)wEpOke(就是真的有挂);该软件可以轻松...
程序员教你!欢乐划水麻将是不是... 程序员教你!欢乐划水麻将是不是有猫腻(透视辅助)都是有挂(2024已更新)(哔哩哔哩)1、点击下载安...
微扑克系统发牌规律!微扑克有计... 1、微扑克系统发牌规律!微扑克有计算器,微扑克ai软件(确实真的有挂);代表性(透视辅助软件透明挂)...