>  Q&A  >  본문

Ruby求阶乘,第二个方法为什么不能自动转换成长整数?

def f(n)
  i = 1
  while n > 0
    i *= n
    n -= 1
  end
  return i
end

def f2(n)
  if n == 1
    return 1
  else
    return n * f2(n-1)
  end
end

puts f(22)
puts f2(22)

运行结果

:!ruby test.rb  | tee /var/folders/_y/prf_0rd90dj668w8cp6fr8gc0000gn/T/vYzoU63/38
1124000727777607680000
-1250660718674968576
(1 of 2): 1124000727777607680000

呃…发现在vim中使用外部命令和在shell下结果是不同的,仍然求解

PHPzPHPz2762일 전852

모든 응답(2)나는 대답할 것이다

  • 阿神

    阿神2017-04-21 11:19:56

    루비 어떤 버전인가요? 2.0.0 미만에서 실행했는데 결과는 정상이었어요

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-21 11:19:56

    1.9.2하의 결과도 정상입니다

    P.S. Ruby 사용시 return은 사용하지 마세요

    회신하다
    0
  • 취소회신하다