鱼C论坛

 找回密码
 立即注册
查看: 1784|回复: 2

[已解决]编写函数获得第n项斐波那契数列的值

[复制链接]
发表于 2023-6-4 15:30:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
【问题描述】

编写函数获得第n项斐波那契数列的值。斐波那契数列前10项如下:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]。第1项为1,第二项为1,从第三项开始,每一项等于前两项之和。

【输入形式】

一个大于2的整数。如3,4,5等。
【输出形式】

一个整数,第n项的斐波那契数列的值
【样例输入】

10
【样例输出】

55

<def Fibonacci(num,n):
    last=num[0];
    now=num[1];
    fibnext=1
    for i in range(n):
        if i<2:
            fibnext=1
        else:
            fibnext=last+now
            last=now
            now=fibnext
    return fibnext
num&#160;&#160;=&#160;&#160;[1,&#160;&#160;1]
n&#160;&#160;=&#160;&#160;int(input())
print(Fibonacci(num,&#160;&#160;n))>

可以帮我解释一下这段代码吗,特别是else后面的。如果你们有更简单的也可以解释一下你们的。谢谢谢谢
最佳答案
2023-6-4 15:36:37
这段代码定义了一个函数  Fibonacci ,用来计算斐波那契数列的第n项。

函数接收两个参数:一个数组  num  和一个整数  n 。

数组  num  的前两项是斐波那契数列的前两项(即1和1)。

整数  n  是用户输入的数,表示要计算的斐波那契数列的项数。

last  是斐波那契数列的前一项, now  是当前项, fibnext  是要计算的下一项。

函数通过一个循环,从第三项开始计算斐波那契数列。因为前两项已经给定(即1和1),所以循环是从第三项开始的。

在循环的每一步,函数首先检查当前的循环索引  i  是否小于2。如果小于2,那么  fibnext  的值就被设置为1,因为斐波那契数列的前两项都是1。

如果  i  大于或等于2,函数就会计算  fibnext  的值,这个值是前两项  last  和  now  的和。然后, last  和  now  的值被更新, last  变成  now , now  变成  fibnext 。

最后,函数返回  fibnext  的值,这就是斐波那契数列的第  n  项。

下面是一种更简单的使用递归计算斐波那契数列的Python函数:
def fibonacci(n):
    if n <= 0:
        return "输入错误,n必须为正整数!"
    elif n == 1 or n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)
这个函数接收一个参数  n ,也是用户输入的数,表示要计算的斐波那契数列的项数。

函数首先检查  n  是否为负数或零,如果是,就返回一个错误消息。

如果  n  等于1或2,函数就返回1,因为斐波那契数列的前两项都是1。

如果  n  大于2,函数就递归地调用自身,计算斐波那契数列的前两项之和。

需要注意的是,虽然这个递归函数看起来更简单,但在计算较大的斐波那契数时,它会变得非常慢,因为它会进行大量的重复计算。因此,对于大的输入,第一种方法(迭代方法)可能会更快。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-4 15:34:03 | 显示全部楼层
这个数列里的每个数都是前两个数的和
这个"now"就是前一个数,"last"上上个数
然后接下来的操作last=now,因为有了新的数,所以我们就要把现在这个新数设为下一个数的上一个数
而last就要把现在的上一个数设为下一个数的上上个数
有用请设置最佳~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-4 15:36:37 | 显示全部楼层    本楼为最佳答案   
这段代码定义了一个函数  Fibonacci ,用来计算斐波那契数列的第n项。

函数接收两个参数:一个数组  num  和一个整数  n 。

数组  num  的前两项是斐波那契数列的前两项(即1和1)。

整数  n  是用户输入的数,表示要计算的斐波那契数列的项数。

last  是斐波那契数列的前一项, now  是当前项, fibnext  是要计算的下一项。

函数通过一个循环,从第三项开始计算斐波那契数列。因为前两项已经给定(即1和1),所以循环是从第三项开始的。

在循环的每一步,函数首先检查当前的循环索引  i  是否小于2。如果小于2,那么  fibnext  的值就被设置为1,因为斐波那契数列的前两项都是1。

如果  i  大于或等于2,函数就会计算  fibnext  的值,这个值是前两项  last  和  now  的和。然后, last  和  now  的值被更新, last  变成  now , now  变成  fibnext 。

最后,函数返回  fibnext  的值,这就是斐波那契数列的第  n  项。

下面是一种更简单的使用递归计算斐波那契数列的Python函数:
def fibonacci(n):
    if n <= 0:
        return "输入错误,n必须为正整数!"
    elif n == 1 or n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)
这个函数接收一个参数  n ,也是用户输入的数,表示要计算的斐波那契数列的项数。

函数首先检查  n  是否为负数或零,如果是,就返回一个错误消息。

如果  n  等于1或2,函数就返回1,因为斐波那契数列的前两项都是1。

如果  n  大于2,函数就递归地调用自身,计算斐波那契数列的前两项之和。

需要注意的是,虽然这个递归函数看起来更简单,但在计算较大的斐波那契数时,它会变得非常慢,因为它会进行大量的重复计算。因此,对于大的输入,第一种方法(迭代方法)可能会更快。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 09:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表