2991462923@qq.c 发表于 2023-6-4 15:30:46

编写函数获得第n项斐波那契数列的值

【问题描述】

编写函数获得第n项斐波那契数列的值。斐波那契数列前10项如下:。第1项为1,第二项为1,从第三项开始,每一项等于前两项之和。

【输入形式】

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

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

10
【样例输出】

55

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

可以帮我解释一下这段代码吗,特别是else后面的。如果你们有更简单的也可以解释一下你们的。谢谢谢谢

陈尚涵 发表于 2023-6-4 15:34:03

这个数列里的每个数都是前两个数的和
这个"now"就是前一个数,"last"上上个数
然后接下来的操作last=now,因为有了新的数,所以我们就要把现在这个新数设为下一个数的上一个数
而last就要把现在的上一个数设为下一个数的上上个数
有用请设置最佳~

isdkz 发表于 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,函数就递归地调用自身,计算斐波那契数列的前两项之和。

需要注意的是,虽然这个递归函数看起来更简单,但在计算较大的斐波那契数时,它会变得非常慢,因为它会进行大量的重复计算。因此,对于大的输入,第一种方法(迭代方法)可能会更快。
页: [1]
查看完整版本: 编写函数获得第n项斐波那契数列的值