• 递归和二分法


    # 递归:在调用一个函数的过程中,又间接或者直接调用了该函数,称之为递归调用
    # 递推和回溯
    # age(5)=age(4)+2
    # age(4)=age(3)+2
    # age(3)=age(2)+2
    # age(2)=age(1)+2
    # age(1)=18

    # age(n)=age(n-1)+2
    # age(1)=18

    # def age(n):
    # if n == 1:
    # return 18
    # return age(n-1)+2
    #
    # res=age(5)
    # print(res) # 26
    # 总结递归的使用:
    # 必须有一个明确的结束条件
    # 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
    # 递归效率不高

    # 二分法
    # l=[1,10,30,66,88,99,100,1000,9999,10000] # 从小到大排列的数字列表
    # def binary_seach(l,num):
    # print(l)
    # mid_index=len(l)//2
    # if num > l[mid_index]:
    # binary_seach(l[mid_index+1:],num)
    # elif num < l[mid_index]:
    # binary_seach(l[0:mid_index], num)
    # else:
    # print('find it')
    #
    # binary_seach(l,99)
    '''
    [1, 10, 30, 66, 88, 99, 100, 1000, 9999, 10000]
    find it
    '''
    # l=[1,10,30,66,88,99,100,1000,9999,10000] # 从小到大排列的数字列表
    # def binary_seach(l,num):
    # print(l)
    # if len(l) == 0:
    # print('not exists')
    # return
    # mid_index=len(l)//2
    # if num > l[mid_index]:
    # binary_seach(l[mid_index+1:],num)
    # elif num < l[mid_index]:
    # binary_seach(l[0:mid_index], num)
    # else:
    # print('find it')
    # binary_seach(l,101)
    '''
    [1, 10, 30, 66, 88, 99, 100, 1000, 9999, 10000]
    [100, 1000, 9999, 10000]
    [100, 1000]
    [100]
    []
    not exists
    '''
    # binary_seach(l,1000)
    '''
    [1, 10, 30, 66, 88, 99, 100, 1000, 9999, 10000]
    [100, 1000, 9999, 10000]
    [100, 1000]
    find it
    '''
  • 相关阅读:
    2016/10/18 数据库设计三大范式
    2016/10/13 Oracle COALESCE()
    2016/10/13 oracle中的round()
    2016/10/10 数据、数据元素和数据项
    2016/09/29 Maven简介
    2016/09/29 瀑布模型开发和敏捷开发
    python2和python3中的类
    使用JQuery完成页面定时弹出广告
    JQuery入门+js库文件分享
    使用JavaScript完成控制下拉列表左右选择
  • 原文地址:https://www.cnblogs.com/0B0S/p/12003133.html
Copyright © 2020-2023  润新知