欢迎访问宙启技术站
智能推送

使用Python函数递归实现阶乘和斐波那契数列

发布时间:2023-05-23 03:25:56

一、阶乘

阶乘是一个非常常见的数学概念,计算n的阶乘即为n!,表示从1乘到n的乘积。例如,3的阶乘是1*2*3=6,4的阶乘是1*2*3*4=24。

下面是使用Python函数递归实现阶乘的代码:

def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n-1)

这个函数的递归思路很简单:如果n为0或1,直接返回1;否则,递归调用函数本身计算n-1的阶乘,并将结果与n相乘。

测试代码:

print(factorial(0)) # 1
print(factorial(1)) # 1
print(factorial(5)) # 120

二、斐波那契数列

斐波那契数列是另一个常见的数学概念,定义如下:第1项和第2项为1,从第3项开始,每一项都等于前两项之和。例如,前10项斐波那契数列为1、1、2、3、5、8、13、21、34、55。

下面是使用Python函数递归实现斐波那契数列的代码:

def fibonacci(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

这个函数的递归思路稍微复杂一些,如果n为1或2,直接返回1;否则,递归调用函数本身计算n-1和n-2的斐波那契数列值,并将结果相加。

测试代码:

print(fibonacci(1)) # 1
print(fibonacci(2)) # 1
print(fibonacci(10)) # 55

需要注意的是,斐波那契数列的递归实现效率相对较低,容易出现栈溢出等问题。具体来说,当n很大时(例如n=100),计算时间和内存消耗都会变得非常巨大,因此 采用非递归的实现方式。