包含python函数递归实例的词条

Python进阶 —— 尾递归 下面是笔者的个人理解: 把计算出的值存在函数内部(当然不止尾递归)是其计算方法,从而不用在栈中去创建一个新的 , 这样就大大节省了空间 。函数调用中最后返回的结果是单纯的递归函数调用(或返回结果)就是尾递归 。
实例还是和笔者的上一篇文章相同 , 建议读者阅读Python —— 递归
常规递归阶乘:
我们来看一下执行过程:
但是如果把上面的函数写成如下形式:
我们再看下执行过程:
很直观的就可以看出,这次的 factorial 函数在递归调用的时候不会产生一系列逐渐增多的中间变量了,而是将状态保存在 acc 这个变量中 。而这种形式的递归,就叫做尾递归 。
常规递斐波那契数列:
而尾递归:
一下子就充满了逼格,还高效了许多,何乐而不为呢!
编写一递归函数求斐波那契数列的前40项以下是使用递归函数来计算斐波那契数列的前40项的Python代码:
pythonCopy code
def fibonacci(n): if n = 1: return n else: return (fibonacci(n-1) + fibonacci(n-2)) # 计算前40项斐波那契数列 for i in range(40): print(fibonacci(i), end=" ")
在这个代码中,fibonacci(n) 函数使用递归方式来计算斐波那契数列的第 n 个数,如果 n 小于或等于 1,则直接返回 n;否则返回前两个斐波那契数的和 。
在 for 循环中,我们通过迭代 0 到 39 来计算斐波那契数列的前 40 个数 。在每次循环中 , 我们调用 fibonacci(i) 函数来计算第 i 个数,并使用 print() 函数将其打印到控制台 。由于 print() 函数的 end 参数设置为一个空格,因此每个数字都会在同一行上打印 。
python设计递归函数,求两个数的最大公约数def common_data(a, b, sub_common):
if sub_common == 1:
return sub_common
else:
k1 = a % sub_common
k2 = b % sub_common
if k1 == k2 == 0:
return sub_common
else:
sub_common = sub_common - 1
return common_data(a, b, sub_common)
上面就是定义了一个递归函数求最大公约数

a = 16
b = 12
c = common_data(16,12,12) # 前两个参数就是需要求最大公约数python函数递归实例的两个数python函数递归实例,第三个参数就是那两个数中较小python函数递归实例的那个数python函数递归实例,返回值就是最大公约数
利用递归函数求斐波那契值python版首先我们要了解一下什么是递归 。
递归法,递归法就是利用上一个或者上几个状态来求取当前状态的值(个人看法) 。也可以说成函数自己调用自己的一种解决问题的策略 。因此递归法通常是依托函数来实现的,递归函数总是会有一个出口,我们在解决递归问题时,只需要找出递归的关系式以及递归函数的出口(这两个可以说是递归函数的核心了) 。下面我将在这里举求斐波那契值的例子带领着大家具体的实践一下递归法 。
很显然递归函数的递推式是:fib(n) = fib(n-1)+fib(n-2) 。
【包含python函数递归实例的词条】 递归函数的出口是当n为1时返回1,当n为0时返回0 。
最后递归函数的核心代码就可以写出了:
然后总的代码就是:
具体思路如下:
语句 return fib(n-1)+fib(n-2)的意思就是向前求斐波那契值,直到n-1=1,n-2=0
因为只有第1个和第0个斐波那契值是确定的
例:
当n=3时
第一次调用函数fib会执行第三条语句(因为n1)这样求回返回fib(2)+fib(1)
第二次调用函数时,因为21所有会返回fib(1)+fib(0);因为1不大于1,所以调用函数时
会执行第二条语句返回1值 。

推荐阅读