Rubyと再帰メソッドを学習しています。私が取り組んでいる問題は、配列内の単語をソートすることです。私の再帰メソッドが正しく配列をソート、しかし、私はメソッドを介して、アレイを実行するたびに、初期の配列(「言葉」)からの最後の言葉は削除されます:再帰を使ってソートすると、配列内の単語が削除/ポップする
# Word sorter
def sort(some_array)
recursive_sort(some_array, [])
end
def recursive_sort(unsorted_array, sorted_array)
if unsorted_array.length <= 0
return sorted_array
end
smallest = unsorted_array.pop
unsorted = []
unsorted_array.each do |word|
if word < smallest
unsorted << smallest
smallest = word
else
unsorted << word
end
end
sorted_array << smallest
recursive_sort(unsorted,sorted_array)
end
words = ['hi', 'welcome', 'bye', 'idk', 'where', 'apples', 'bananas']
sort(words)
puts "#{words}"
sort(words)
puts "#{words}"
sort(words)
puts "#{words}"
これは、「言葉に何が起こるかであります"アレイ:
["hi", "welcome", "bye", "idk", "where", "apples"]
["hi", "welcome", "bye", "idk", "where"]
["hi", "welcome", "bye", "idk"]
どうしたのですか?
私はpersonnally追加します! 'recursive_sort'を使用して、副作用があることをユーザーに通知します。 – floum
私は今、答えをありがとう! – ckdub