zoukankan      html  css  js  c++  java
  • python 递归与 二分查找

    # =============================       递归 与  算法

    #递归
    # n = 1 金老板 38+2 =40
    # n = 2 alex n+2= 金老板 36+2 = 38
    # n = 3 wusir n+2 = alex wusir 36

    # def age(n): #n = 2
    # if n == 3:
    # return 36
    # else:
    # return age(n+1)+2
    #
    # jin_age = age(1) # 40
    # print(jin_age)

    # 求阶乘 _ 递归函数
    # 5! = 5*4*3*2*1 # 5 * 4! fn(5)
    # 4! = 4*3*2*1 # 4 * 3! fn(4)
    # 3 * 2! fn(3)
    # 2 *1! fn(2)
    # 1 fn(1) = 1
    # def fn(n): #n=5
    # if n == 1:return 1
    # return fn(n-1) * n
    # print(fn(5))


    #算法

    # 算法 计算的方法
    # 99*99 = 99*(100-1) = 99*100-99*1 = 99*100-99 = 9900-99 = 9801 _ 人计算的方法
    # 99 * 99
    # 计算机的思维和人脑的思维是不同的
    # 算法很难
    # 计算机领域的 算法 是计算机认为简便的算法

    # 查找算法
    # l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
    # 66
    # 方法一: 循环 # 5000000 4999999
    # 方法二: l.index(66) #最正确的方法

    # 算法
    # 从有序的列表中查找值的位置
    # [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
    # 41 < 66
    # [42,43,55,56,66,67,69,72,76,82,83,88]
    # 66 < 67
    # [42,43,55,56,66]
    # 55 < 66
    # [56,66]
    # 56 < 66
    # [66]
    # 66 == 66

    # 递归 : 解决一个问题,问题的答案,依托于另一个问题,另外的这个问题和要解决的问题是基本一致的
    # l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
    # def find(l,aim):
    # mid = len(l)//2
    # if l[mid] > aim:
    # new_l = l[:mid]
    # find(new_l,aim)
    # elif l[mid] < aim:
    # new_l = l[mid+1:]
    # find(new_l, aim)
    # elif l[mid] == aim:
    # print('找到了:',mid,aim,l[mid])
    # find(l,66)

    # 完整详细的 二分查找
    # def find(l,aim,start=0,end=None):
    # if end == None:end = len(l)-1
    # if start <= end:
    # mid = (end - start) // 2 + start
    # if l[mid] > aim:
    # return find(l,aim,start=start,end=mid-1)
    # elif l[mid] < aim:
    # return find(l,aim,start=mid+1,end=end)
    # elif l[mid] == aim:
    # return mid
    # else:
    # return None
    # l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
    # print('ret :',find(l,18))
    # 1 如果要查找的值不在列表中
    # 2 参数的简化
    # 3 返回值的问题
  • 相关阅读:
    其他魔术方法
    类型约束和类的魔术常量
    PHP对象遍历、内置标准类与数据转对象
    类的自动加载与对象的克隆
    PHP重载与接口
    面向对象
    PHP基础
    地下城与勇士的项目整理
    mysql建表
    jQuery
  • 原文地址:https://www.cnblogs.com/xuerh/p/8476168.html
Copyright © 2011-2022 走看看