递归函数

2018-06-18 00:06:55来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

一、递归函数

  在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

       特性:

  • 必须有一个明确的结束条件
  • 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
  • 递归函数的优点是定义简单,逻辑清晰

  注意:

  使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

二、事例

  2.1 阶乘

def func(n):

    if n == 1:
        return 1
    else:
        return n * func(n-1)
View Code

  2.2 二分法  

t = [i for i in range(0, 1000, 3)]
# print(t)


def find_num(data_list, num):
    if num in data_list:
        if len(data_list) > 1:
            mid = int(len(data_list) / 2)
            if data_list[mid] == num:
                print('找到该数字:', data_list[mid])
                return data_list[mid]
            elif data_list[mid] > num:
                print('该数字在本次搜寻中间数[%d]的左边' % data_list[mid])
                return find_num(data_list[0:mid], num)
            else:
                print('该数字在本次搜寻中间数[%d]的右边' % data_list[mid])
              return find_num(data_list[mid:], num)

        else:
            print('该数字就在列表第一位')
    else:
        print('列表中不存在该数字')

if __name__ == '__main__':
    
    while True:
        n = int(input('输入你要查找的数字:'))
        find_num(t, n)

  

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python实战===老司机奇技淫巧系列之字符转换成图片

下一篇:RabbitMQ消息分发轮询和Message Acknowledgment