为什么类中的函数不返回任何内容?

用户16384091

出于锻炼的原因,我试图在 python 中实现一个代表静态排序映射 SSM以实现这些方法

min_value(self) : 找到最小值

max_value(self) : 找到最大值

search(self, key): 在列表中查找元素

假定列表已排序。

这是该类的代码:

class SSM:
    def __init__(self, A):
        self.sorted_list = A[:] #the list, assume A is sorted

    def min_value(self):
        return self.sorted_list[0]
    
    def max_value(self):
        return self.sorted_list[-1]
    
    def search(self, K): 

        def __Bin_Search(s, e, K): # local function # implementation pseudocode
            if s == e:
                if self.sorted_list[s] == K:
                    return True, s # return True and position
                else:
                    return False

                x =  math.ceil((s+e)/2)
                if self.sorted_map[x] == K:
                    return  True, x # return True and position

                if self.sorted_list[x] > K:
                    return __Bin_Search(s, x-1, K) # go recursive
                else:
                    return __Bin_Search(x+1, e, K) # go recursive
                
        return __Bin_Search(0, len(self.sorted_list), K) # call __Bin_Search

正如您从代码中看到的,对于该方法,search (self, K)我有一个内部函数__Bin_Search(s, e, K),它在列表的左侧或右侧递归以查找元素(它基于二进制搜索算法)。因此,我希望这些方法search (self, K)返回给定的结果,__Bin_Search因为它在最后一行中被调用。

我的问题是通过使用search(self, K)没有返回任何内容。

A = [45, 33, 36, 30, 27, 40, 16, 27]
A.sort()
ssm = SSM(A)

ssm.search(33)

代码中的错误在哪里?我该如何解决?

光滑的

您的列表的长度总是大于0所以 s 永远不会等于 e,因此永远不会到达 return 语句。您需要在__Bin_Searchwhere 中添加条件语句s != e

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么 .map 函数在反应中不返回任何内容

如果javascript中的函数不返回任何内容,为什么?

为什么在搜索存在的类时不返回任何内容?

为什么 dask 在 CUDA 函数上不返回任何内容?

main函数不返回任何内容。为什么?

为什么套接字中的recv()函数不返回任何内容?

为什么.map()不返回任何内容?

函数在 nodejs 中不返回任何内容

为什么Swift的类型检查系统允许返回类型的函数不返回任何内容?

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

为什么声明不返回任何内容的函数的返回值只会导致gcc8中的运行时崩溃

python函数中的返回语句不返回任何内容

Mongoose.findOne不返回任何内容,为什么?

Ajax请求不返回任何内容。为什么?

为什么PIG FILTER不返回任何内容?

为什么scanf()总是不返回任何内容?

为什么我的内部联接查询不返回任何内容?

为什么此处理程序不返回任何内容?

为什么python在计算后不返回任何内容?

为什么此提取请求不返回任何内容

FutureBuilder 快照数据不返回任何内容,为什么?

为什么OpenGL方法不返回任何内容?

为什么mycourses [i] .getGrade()不返回任何内容(C ++)?

为什么调用存储过程不返回任何内容?

为什么我的 for 循环不返回任何内容?

为什么“ c:forEach”循环在此jsp中不返回任何内容?

为什么我不能将函数表达式注释为 void 尽管它在 TypeScript 中不返回任何内容?

为什么我在 CodeIgniter 函数中的查询没有返回任何内容?

为什么我的异步函数不返回任何结果?