利用递归函数求斐波那契值python版

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用递归函数求斐波那契值python版相关的知识,希望对你有一定的参考价值。

参考技术A 首先我们要了解一下什么是递归。

递归法,递归法就是利用上一个或者上几个状态来求取当前状态的值(个人看法)。也可以说成函数自己调用自己的一种解决问题的策略。因此递归法通常是依托函数来实现的,递归函数总是会有一个出口,我们在解决递归问题时,只需要找出递归的关系式以及递归函数的出口(这两个可以说是递归函数的核心了)。下面我将在这里举求斐波那契值的例子带领着大家具体的实践一下递归法。

很显然递归函数的递推式是:fib(n) = fib(n-1)+fib(n-2)。

递归函数的出口是当n为1时返回1,当n为0时返回0。

最后递归函数的核心代码就可以写出了:

然后总的代码就是:

具体思路如下:

语句 return fib(n-1)+fib(n-2)的意思就是向前求斐波那契值,直到n-1=1,n-2=0

因为只有第1个和第0个斐波那契值是确定的

例:

当n=3时

第一次调用函数fib会执行第三条语句(因为n>1)这样求回返回fib(2)+fib(1)

第二次调用函数时,因为2>1所有会返回fib(1)+fib(0);因为1不大于1,所以调用函数时

会执行第二条语句返回1值。

第三次调用函数,会执行第一和第二条语句,依次返回0和1从而求得fib(2)

fib(3)=fib(2)+fib(1)

fib(2)=fib(1)+fib(0)

即fib(3)=fib(1)+fib(0)+fib(1)=2*fib(1)+fib(0)

求斐波那契数的python语言实现---递归和迭代

迭代实现如下:

def fab(n):
        n1 = 1
        n2 = 1
        if n<1:
                print("输入有误!")
                return -1
        while (n-2)>0:
                n3 = n2+n1
                n1 = n2
                n2 = n3
                n-=1
        return n3
number = int(input("请输入要求的斐波那契数的第几个数:"))
result = fab(number)
print(result) 

递归实现如下:

def fab(n):
    if n==1 or n==2:
        f = 1
    else:
        f = fab(n-1)+fab(n-2)
    return f
number = int(input("请输入要求的斐波那契数的第几个数:"))
result = fab(number)
print(result)

 

以上是关于利用递归函数求斐波那契值python版的主要内容,如果未能解决你的问题,请参考以下文章

python递归求斐波那契数列前10项

递归求斐波那契数列

编写一个程序,利用递归函数求斐波那契数列(0,1,1,2,3,5,8,13,21…… )前100项的和

用递归函数求斐波那契数列的第n项的值

249 递归:概念,利用递归求1~n的阶乘,利用递归求斐波那契数列,利用递归遍历数据

如何用递归解决斐波那契数列