zoukankan      html  css  js  c++  java
  • 【python入门到放弃】二分查找+接收不到返回值的问题梳理

    一、二分查找

     1 def erfen_search(para1,find_num):
     2     '''
     3     二分查找
     4     :param para1: 要查找的范围,比如列表或元组
     5     :param find_num: 要查找的数字
     6     :return:
     7     '''
     8     mid_index = len(para1)//2
     9     mid_num = para1[mid_index ]
    10     try:
    11         if find_num == mid_num:
    12             print('找到啦')
    13         elif find_num > mid_num:
    14             para1 = para1[mid_index+1:]
    15             erfen_search(para1,find_num)
    16         elif find_num < mid_num:
    17             para1 = para1[:mid_index]
    18             erfen_search(para1,find_num)
    19     except IndexError:
    20         print('未找到')
    21 
    22 #函数调用
    23 ls = [1,2,3,30,44,56,789,9000]
    24 erfen_search(ls,56)  

    二、思考与问题:

    1.自己在上面二分查找代码的基础上又优化了一下,想要在查找成功的时候,接收到一个返回值,比如接收的返回值内容为True

     1 def erfen_search(para1,find_num):
     2     '''
     3     二分查找
     4     :param para1: 要查找的范围,比如列表或元组
     5     :param find_num: 要查找的数字
     6     :return:
     7     '''
     8     mid_index = len(para1)//2
     9     mid_num = para1[mid_index ]
    10     try:
    11         if find_num == mid_num:
    12             print('找到啦')
    13             return True                 #增加了一行代码,接收返回值
    14         elif find_num > mid_num:
    15             para1 = para1[mid_index+1:]
    16             erfen_search(para1,find_num)
    17         elif find_num < mid_num:
    18             para1 = para1[:mid_index]
    19             erfen_search(para1,find_num)
    20     except IndexError:
    21         print('未找到')
    22 #函数调用
    23 ls = [1,2,3,30,44,56,789,9000]
    24 resault = erfen_search(ls,56)       #用resault接收返回值
    25 print(resault)      #打印之后发现,resault 接收到的值是None ???为什么???
    26 
    27 #执行结果
    28 找到啦
    29 None

    2.自己调试了一会发现,二分查找用到了函数的递归,先一层一层递推,再一层一层回溯回来;那么最后函数接收到的返回值实际上是以最后回溯给函数的返回值为准;于是我进行了简单的梳理和分析。知道了为什么最后数据查询成功了,但是没有返回值;

  • 相关阅读:
    <转>jmeter(十七)目录结构
    <转>jmeter(十六)配置元件之计数器
    <转>jmeter(十五)函数助手
    电商系统处理
    小程序web-view组件
    微信小程序中target与currentTarget
    小程序中navigator和wx.navigateTo,wx.redirectTo,wx.reLaunch,wx.switchTab,wx.navigateBack的用法
    怎么设置登录名 登陆后只能看到和操作一个数据库 这个用户不能看到其他的数据库
    安装和卸载windows服务程序
    sqlserver字符串多行合并为一行
  • 原文地址:https://www.cnblogs.com/chenglei0520/p/9438762.html
Copyright © 2011-2022 走看看