zoukankan      html  css  js  c++  java
  • 递归函数

    一、递归函数

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

           特性:

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

      注意:

      使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(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)
    

      

  • 相关阅读:
    最热CPLDFPGA论坛
    DSP Builder开发环境安装
    math.h数学函数库
    (转)Fast Input/Output Registers约束
    用EXCEL去掉最高最低数,网上看到,觉得不错
    GMS6.5.3有0DAY的下载了
    [转]为ArcGIS制作符号
    Total Commander 7.5Beta1的便携版
    关于CAD的一个小发现
    可恶的AP PDF password recovery
  • 原文地址:https://www.cnblogs.com/bigberg/p/8134777.html
Copyright © 2011-2022 走看看