使用数组循环执行基本线性搜索,而不返回预期值。给出:
students = ["Alex", "Kyle", "Libby", "Monkey Boy"]
我正在尝试进行基本的线性搜索,看看名字“Monkey Boy”是否存在,并返回它的索引。
def linear_search(array, name)
i = 0
while i < array.length
if array[i] == "#{name}"
return i
else
return -1
end
i+=1
end
end
linear_search(students, "Alex") # returns 0
linear_search(students, "Monkey Boy") # returns -1, should return 3
非常困惑。这是怎么回事?
答案 0 :(得分:1)
return -1
应该在while循环之外。
def linear_search(array, name)
i = 0
while i < array.length
if array[i] == "#{name}"
return i
end
i+=1
end
return -1
end
答案 1 :(得分:1)
如果仔细查看,您的while块不正确
def linear_search(array, name)
i = 0
while i < array.length
if array[i] == "#{name}"
return i
else
return -1
end
i+=1
end
end
搜索linear_search(students, "Alex")
时
{[1}}出现在数组[0]上,而"Alex"
是array[i] == "#{name}"
它返回i并打破循环
搜索true
时
数组[3]中存在linear_search(students, "Monkey Boy")
,第一次"Monkey Boy"
为array[i] == "#{name}"
,即false
== "Alex"
它返回-1,即执行其他部分和打破循环没有增量
如果你删除了其他部分,那么它将作为早期答案或以更优雅的方式工作
"Monkey Boy"