意外回归(本地跳线错误)

时间:2011-09-20 03:16:59

标签: ruby

def getPrime(testNumber)
    temp1=testNumber -1;
    bIsPrime = false;
    while (temp1 > 1) do
        bIsPrime = ((testNumber % temp1) == 0)  
        puts("Check 1 #{((testNumber % temp1) == 0)}, temp1=#{temp1} ");
        if ($bIsPrime) 
            break;
        else
            temp1 = temp1-1;
        end
    end
    return bIsPrime
end

puts("Enter any number to know if it's Prime or not");

testNumber = gets()

returnVal = getPrime(Integer(testNumber));

puts("Is enternered number Pime? #{return}");

我刚开始使用Ruby ...所以首先我试着写一个素数程序。

这件事给出错误“意外回归”

任何帮助都会很棒。感谢。

3 个答案:

答案 0 :(得分:3)

return是保留的。除了返回之外,您不能将它用作变量名,否则不能。

我相信你的意思是puts("Is entered number prime? #{!returnVal}");

答案 1 :(得分:2)

不要检查这个答案,亚当是第一个。但是这里有更多信息

正如亚当在答案中所说,问题在于你说

puts("Is enternered number Pime? #{return}");

发生了什么

Ruby评估#{ foo }构造内的任何内容 - 如果它在插值字符串中,例如

puts "1 + 1 = #{1+1}" ==>>将打印1 + 1 = 2

然后将结果值转换(强制)为字符串。

在你的情况下,你告诉ruby评估return语句,这在上下文中没有任何意义。因此有点奇怪的错误信息。

答案 2 :(得分:0)

虽然你已经有了答案,但我认为放在这里是有帮助的,它遵循你在代码中使用的相同想法:

def is_prime?(test_number)
    (2..test_number-1).reverse_each do |i|
        divisible = (test_number % i == 0)
        puts "Check ##{test_number-i}, divisible=#{divisible}, temp=#{i}"
        return false if divisible
    end
    return true
end
puts "Enter any number to know if it's prime or not"
test_number = gets.chomp.to_i
puts "Is entered number prime? #{is_prime?(test_number)}"