首页 > 解决方案 > 如何计算迭代/步骤的数量以找到方法的答案 - RUBY

问题描述

如何获得此方法找到答案所需的迭代/步骤数?

def binary_search(array, n)
 min = 0
 max = (array.length) - 1

 while min <= max
     middle = (min + max) / 2

    if array[middle] == n
          return middle
     elsif array[middle] > n
         max = middle - 1
     elsif array[middle] < n
       min = middle + 1
     end 
     end 
    "#{n} not found in this array"
 end 

标签: rubybinary-search

解决方案


代替计数器使用的一个选项是.with_index关键字。要使用它,您需要使用loop而不是while,但它应该工作相同。这是一个带有输出的基本示例。

arr = [1,2,3,4,5,6,7,8]
loop.with_index do |_, index| # The underscore is to ignore the first variable as it's not used
  if (arr[index] % 2).zero?
    puts "even: #{arr[index]}"
  else
    puts "odd: #{arr[index]}"
  end

  break if index.eql?(arr.length - 1)
end

=>
odd: 1
even: 2
odd: 3
even: 4
odd: 5
even: 6
odd: 7
even: 8

推荐阅读