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)

执行结果:

posted @ 2020-08-21 16:17  匿名好友  阅读(225)  评论(0编辑  收藏  举报