ruby - 如何计算迭代/步骤的数量以找到方法的答案 - 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
解决方案
代替计数器使用的一个选项是.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
推荐阅读
- events - GoJS - 单击事件奇怪的行为,“this”最终为空
- string - 无法将字节转换为字节[]
- ruby-on-rails - 使用 simple_token_authentication rails 登录后重定向到引用域
- php - Stripe“trial_end”在使用php的订阅中不起作用
- python - 如何创建具有随机数量变量的真值表生成器,以提取递归函数的参数?
- javascript - 从 SVG 图标打开 fancybox 库,但在右侧拇指列表问题中显示原始图像
- php - NetSuite 使用 PHP oAuth 1.0 连接时出现错误
- swift - 如何将通用视图传递给 SwiftUI 中的结构
- datagrid - 内联编辑后 ORO CRM 数据网格刷新因缺少参数而失败
- python - 动态更新 ttk.OptionMenu 而不会影响其先前的回调/命令