线性搜索未成功完成
Linear Search not completing successfully
在数组上循环执行基本线性搜索,而不是 return 预期值。给定:
students = ["Alex", "Kyle", "Libby", "Monkey Boy"]
我正在尝试进行基本线性搜索以查看名称 "Monkey Boy" 是否存在,并且 return 它是索引。
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
很困惑。这是怎么回事?
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
仔细看你的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")
"Alex"
出现在数组 [0],array[i] == "#{name}"
是 true
它 return i 并打破循环
当你搜索时linear_search(students, "Monkey Boy")
"Monkey Boy"
出现在数组 [3] 中,第一次 array[i] == "#{name}"
是 false
即 "Alex"
== "Monkey Boy"
它 return -1,即执行 else 部分并且 中断循环没有增量
如果您从 while 中删除 else 部分,它将作为较早的答案或以更优雅的方式工作
def linear_search(array, name)
return array.index(name).nil? ? -1 : array.index(name)
end
linear_search(students, "Kyle") # 0
linear_search(students, "Monkey Boy") # 3
linear_search(students, "Monkey") # -1
在数组上循环执行基本线性搜索,而不是 return 预期值。给定:
students = ["Alex", "Kyle", "Libby", "Monkey Boy"]
我正在尝试进行基本线性搜索以查看名称 "Monkey Boy" 是否存在,并且 return 它是索引。
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
很困惑。这是怎么回事?
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
仔细看你的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")
"Alex"
出现在数组 [0],array[i] == "#{name}"
是 true
它 return i 并打破循环
当你搜索时linear_search(students, "Monkey Boy")
"Monkey Boy"
出现在数组 [3] 中,第一次 array[i] == "#{name}"
是 false
即 "Alex"
== "Monkey Boy"
它 return -1,即执行 else 部分并且 中断循环没有增量
如果您从 while 中删除 else 部分,它将作为较早的答案或以更优雅的方式工作
def linear_search(array, name)
return array.index(name).nil? ? -1 : array.index(name)
end
linear_search(students, "Kyle") # 0
linear_search(students, "Monkey Boy") # 3
linear_search(students, "Monkey") # -1