def gnome_sort(array, i=1) if i < array.size if array[i - 1] >= array[i] array[i - 1], array[i] = array[i], array[i - 1] i = i > 1 ? i - 1 : i + 1 else i = i + 1 end gnome_sort(array, i) else array end end
returnを使うともうちょっとさっぱりするのかもしれないけど、Rubyでreturn書くようなコードは書きたくないので。