使用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),计算时间和内存消耗都会变得非常巨大,因此 采用非递归的实现方式。
