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)
执行结果: