Я пишу метод, который возвращает значение рано. Я знаю, как писать по-другому, но я хотел бы понять, почему его запись таким образом возвращает неверное значение. Я пытаюсь получить «nth» простое число, и метод ниже работает, и ошибок нет, но он продолжает возвращаться. 1. В приведенном ниже примере я даже использовал функцию «p», чтобы убедиться что count и int увеличивается каждый раз, но по какой-либо причине возвращаемое значение, которое я получаю, равно 1 или любое другое значение, на которое я вызываю метод upto. Любые указания или объяснения о том, почему это происходит, были бы очень желанными.Значение сохраняет раннее
def primeMover(num)
count = 0
1.upto(num) do |int|
return int if count == num
count += 1 if is_prime?(int)
end
end
def is_prime?(number)
return false if number < 2
2.upto(Math.sqrt(number)) { |divisor| return false if number % divisor == 0 }
return true
end
Да, и «раннее возвращение» фактически никогда не достигнуты потому что вы ищете только от 1 до N для Nth prime, а Nth prime обычно будет намного больше N. Вы должны искать большее пространство. Вероятно, вы должны использовать бесконечный цикл вместо использования upto. –