ruby 递归调用

#encoding: utf-8

puts "hello"

class REC

    attr_reader :ids

    def initialize
        @ids = []
    end

    def get_work_ticket(days)
        puts "func get work ticket"
        if(days>10)
            days = days - 10
            @ids << days
            get_work_ticket(days)
        else
            @ids << days
        end
    end

end

worker = REC.new
worker.get_work_ticket(100)
p worker.ids

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Ruby 中的快速排序代码如下:def quick_sort(array) return array if array.length <= 1 pivot = array.delete_at(rand(array.length)) left, right = array.partition { |x| x < pivot } return *quick_sort(left), pivot, *quick_sort(right) end ### 回答2: Ruby的快速排序算法如下: ```ruby def quick_sort(arr) return arr if arr.length <= 1 # 如果数组长度小于等于1,直接返回 pivot = arr.sample # 选择一个基准元素 less = arr.select { |item| item < pivot } # 小于基准的数组 equal = arr.select { |item| item == pivot } # 等于基准的数组 greater = arr.select { |item| item > pivot } # 大于基准的数组 return quick_sort(less) + equal + quick_sort(greater) # 递归调用快速排序,并将结果合并 end arr = [5, 8, 2, 1, 10, 3] sorted_arr = quick_sort(arr) puts sorted_arr.to_s ``` 这段代码使用了递归的方法实现快速排序。首先,选择一个基准元素,一般可以随机选择数组中的某个元素。然后,根据基准元素将数组分成3部分:小于基准的元素数组、等于基准的元素数组和大于基准的元素数组。接着,利用递归的方式分别对小于基准和大于基准的两个数组进行排序,再将三个部分的结果合并起来即可得到最终排序结果。 在上述代码中,通过使用select方法将数组元素按照与基准元素的大小关系分成不同的数组。最后,通过递归调用quick_sort方法对小于基准和大于基准的两个数组进行排序,并将结果进行合并返回。最终,输出排序后的数组。 ### 回答3: Ruby中的快速排序算法代码如下所示: ```ruby def quick_sort(array) return array if array.length <= 1 pivot = array.sample less = [] equal = [] greater = [] array.each do |element| if element < pivot less << element elsif element == pivot equal << element else greater << element end end return quick_sort(less) + equal + quick_sort(greater) end # 示例用法 array = [5, 2, 8, 4, 1, 9, 3, 6, 7] sorted_array = quick_sort(array) puts sorted_array ``` 该代码使用递归的方式实现快速排序算法。首先,判断数组的长度是否小于等于1,如果是,则直接返回该数组。如果数组长度大于1,则从中选择一个基准元素(这里使用`sample`方法随机选择),并将数组分为小于、等于和大于基准元素的三个部分。然后将这三个部分分别递归地进行快速排序,最后将排序好的结果按照小于、等于、大于的顺序连接起来返回。 更详细的解释可以参考注释。以上是对快速排序算法的一个简单实现,可以应用于对数组进行排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值