Python 递归函数示例
1、一个数的乘阶(一个正整数的阶乘,是所有小于及等于该数的正整数的积,数字0的乘阶是1)
def fac_T(n): if n == 0: return 1 else: return fac_T(n-1) * n
######### 函数优化后的定义,通过尾递归方式实现函数 ###############
def fac_T_yh(n):
if n == 0:
return 1
return fac_T_yh(n-1) * n
调用函数:
ret = fac_T(5)
print(ret)
执行结果:
2、通过二分法,在一个已排序的数组data_set中,找出n值所在的位置;假设数组的范围是[ low.... high ],我们需要查找的数字n就在这个范围里;查找的思路是:a、拿low到high正中间的数字,我们假设这个数字是mid;b、拿数字mid和数字n相比,如果mid > n,说明我们要查找的数字n在数字low到数字mid这个区间,否则数字n就在数字mid到数字high这个区间; c、无论数字n在那个区间,我们就重复a和b的过程,直到找出数字n的位置。
def find_num(n,low,high,lst): mid = int((low+high)/2) if low == high: # print('n不在梳理data_lst中') return if lst[mid] > n: # print('n 在数列data_lst的左边') find_num(n,low,lst[mid],lst) elif lst[mid] < n: # print('n 在数列data_lst的右边') find_num(n,lst[mid],high,lst) else: print('n在数列data_lst的%s位' %(lst[mid]))
data_lst = list(range(101))
调用函数:
>>> find_num(55,lst[0],lst[-1],lst)
执行结果: