为什么我的递归二进制搜索函数不返回任何内容?

雷鬼蜥蜴

(...不要问这些数组的值,它们是拉丁美洲的食品品牌,与一些朋友开了个玩笑)。

def binSearch(arr, i, lower=0, upper=None):
    if upper is None:
        upper = len(arr)+1
    idx = (lower+upper)//2
    if arr[idx] == i:
        print(idx, arr[idx],'\n')
        #return idx
    elif arr[idx] != i and upper-lower<2:
        print("Not found \n")
        #return False
    elif arr[idx] < i:
        print(idx, arr[idx])
        binSearch(arr, i, idx, upper)
    elif arr[idx] > i:
        print(idx, arr[idx])
        binSearch(arr, i, lower, idx)

myArray = ["Chabona", "F-Nandito VII", "La Bichy", "Manaos", "Martín y Enzo", "Pitusas", "Trompis", "Ugi's", "VAMOS MANAOS", "Villamanaos"]

binSearch(myArray, "Manaos")
binSearch(myArray, "Coca-Cola")

该程序完全按照我的预期做–它输出以下内容:

5 Pitusas
2 La Bichy
3 Manaos 

5 Pitusas
2 La Bichy
1 F-Nandito VII
Not found

然而,这是我所得到的,当我注释掉所有打印语句使其返回idxNone代替,然后用更换电话print(binSearch(myArray, "Manaos"))print(binSearch(myArray, "Coca-Cola"))

None
None

它显然应该返回3False但是什么也不会返回。我究竟做错了什么?

帕德拉克·坎宁安(Padraic Cunningham)

您不返回:

return binSearch(arr, i, lower, idx)

您还需要根据情况返回:

def binSearch(arr, i, lower=0, upper=None):
    if upper is None:
        upper = len(arr)+1
    idx = (lower+upper)//2
    if arr[idx] == i:
        print(idx, arr[idx],'\n')
        return idx # return 3/idx
    elif arr[idx] != i and upper-lower<2:
        print("Not found \n")
        return False  # return False
    elif arr[idx] < i:
        print(idx, arr[idx])
        return binSearch(arr, i, idx, upper)
    elif arr[idx] > i:
        print(idx, arr[idx])
        return binSearch(arr, i, lower, idx)

print(binSearch(myArray, "Manaos"))
print(binSearch(myArray, "Coca-Cola"))

5 Pitusas
2 La Bichy
3 Manaos 

3
5 Pitusas
2 La Bichy
1 F-Nandito VII
Not found 

False

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的函数的输出为二进制?

来自分类Dev

递归打印二进制搜索树的内容?

来自分类Dev

二进制搜索树的递归后继函数(Python)

来自分类Dev

Python二进制搜索readline不返回整行

来自分类Dev

使用递归的二进制搜索

来自分类Dev

从二进制搜索函数中返回值

来自分类Dev

为什么此二进制搜索成功后,中间的返回值被忽略?

来自分类Dev

我的二进制搜索算法模板函数总是返回False

来自分类Dev

递归函数,用于查找单个数组中不返回二进制值的二进制文件。(不一样)

来自分类常见问题

为什么输入后我的二进制搜索脚本无法执行?

来自分类Dev

为什么我的二进制搜索实现效率很低?

来自分类Dev

为什么二进制搜索在我的测试中不起作用?

来自分类Dev

为什么输入后我的二进制搜索脚本无法执行?

来自分类Dev

为什么我的二进制搜索树无效删除功能无法正常工作?

来自分类Dev

为什么我的二进制搜索实现效率很低?

来自分类Dev

cat为什么更改二进制文件的内容?

来自分类Dev

为什么编译后我们不能理解二进制文件的内容?

来自分类Dev

二进制搜索始终返回-`

来自分类Dev

二进制搜索数学函数

来自分类Dev

二进制搜索数学函数

来自分类Dev

为什么我的补丁以二进制格式发布?

来自分类Dev

我想要一个递归函数使用二进制搜索来检查数组的顺序

来自分类Dev

为什么我的十进制到二进制程序以表格式向后返回值?

来自分类Dev

Java二进制搜索树删除递归返回已删除元素

来自分类Dev

二进制搜索树递归返回未定义-Javascript

来自分类Dev

Java二进制搜索树删除递归返回已删除元素

来自分类Dev

实现递归的空函数(二进制搜索树的查找高度)

来自分类Dev

使用递归函数在二进制搜索树中插入项目

来自分类Dev

为什么我们在二进制搜索中写lo +(hi-lo)/ 2?

Related 相关文章

  1. 1

    为什么我的函数的输出为二进制?

  2. 2

    递归打印二进制搜索树的内容?

  3. 3

    二进制搜索树的递归后继函数(Python)

  4. 4

    Python二进制搜索readline不返回整行

  5. 5

    使用递归的二进制搜索

  6. 6

    从二进制搜索函数中返回值

  7. 7

    为什么此二进制搜索成功后,中间的返回值被忽略?

  8. 8

    我的二进制搜索算法模板函数总是返回False

  9. 9

    递归函数,用于查找单个数组中不返回二进制值的二进制文件。(不一样)

  10. 10

    为什么输入后我的二进制搜索脚本无法执行?

  11. 11

    为什么我的二进制搜索实现效率很低?

  12. 12

    为什么二进制搜索在我的测试中不起作用?

  13. 13

    为什么输入后我的二进制搜索脚本无法执行?

  14. 14

    为什么我的二进制搜索树无效删除功能无法正常工作?

  15. 15

    为什么我的二进制搜索实现效率很低?

  16. 16

    cat为什么更改二进制文件的内容?

  17. 17

    为什么编译后我们不能理解二进制文件的内容?

  18. 18

    二进制搜索始终返回-`

  19. 19

    二进制搜索数学函数

  20. 20

    二进制搜索数学函数

  21. 21

    为什么我的补丁以二进制格式发布?

  22. 22

    我想要一个递归函数使用二进制搜索来检查数组的顺序

  23. 23

    为什么我的十进制到二进制程序以表格式向后返回值?

  24. 24

    Java二进制搜索树删除递归返回已删除元素

  25. 25

    二进制搜索树递归返回未定义-Javascript

  26. 26

    Java二进制搜索树删除递归返回已删除元素

  27. 27

    实现递归的空函数(二进制搜索树的查找高度)

  28. 28

    使用递归函数在二进制搜索树中插入项目

  29. 29

    为什么我们在二进制搜索中写lo +(hi-lo)/ 2?

热门标签

归档