def binarysearch(a, b, tofind, stringarray)
k=(a+b)/2
if a==b
return nil
end
if (stringarray[k]).include? tofind
return stringarray[k]
end
if (stringarray[k]<=>tofind)==1
binarysearch(a,k,tofind,stringarray)
end
if (stringarray[k]<=>tofind)==-1
binarysearch(k,b,tofind,stringarray)
end
if (stringarray[k]<=>tofind)==0
return stringarray[k]
end
end
Это алгоритм двоичного поиска. A и b - это индексы массива, над которыми он работает, tofind - это строка, которую он ищет, а stringarray - массив строк. К сожалению, каждый раз, когда я пытаюсь запустить эту функцию, я получаю следующую синтаксическую ошибку:
undefined method `include?' for 1:Fixnum (NoMethodError)`
Но это не фикснум. Я довольно новичок в Ruby, поэтому я мог легко упустить что-то очевидное. Любой совет?
Здесь я объявляю stringarray: (Netbeans говорит, что это массив)
strings=Array.new
newstring=""
until newstring=="no" do
newstring=gets.chomp
strings[strings.size]=newstring
end