나는 Ruby에서 지금까지 완성한 18 가지의 오일러 과제를 다시하고 있습니다. 불행히도 나는 초급 실수를하고 내가 뭘 잘못하고 있는지 알 수 없다. 특히 아래 코드의 문제점은 무엇입니까? 나는 4 백만 밑에 모든 피보나치 수를 더하려고 노력한다.while 루프에 어떤 문제가 있습니까?
start = Time.now
def sum_fibonacci_till_4_million
previous_previous_value = 1
previous_value = 2
i = 2
fibo = Array.new
while previous_value < 4000000 do
fibo.push(previous_previous_value)
fibo.push(previous_value)
temp = previous_value
previous_value = previous_value + previous_previous_value
previous_previous_value = temp
i++
end
return fibo.inject(:+)
end
puts "The answer is #{sum_fibonacci_till_4_million()} and it took #{(start - Time.now)
* 1000} milliseconds."
내가 얻을 출력은 내가 전에이 오류가 있었다
2.rb:22: syntax error, unexpected keyword_end
2.rb:27: syntax error, unexpected $end, expecting keyword_end
...ime.now) * 1000} milliseconds."
...
내가이야위한 루프와 그것을 해결하기 위해 관리. 하지만 분명히 내 말의 진술에 잘못된 것이있다. 나는 무엇을 모른다.
누군가 나를 도울 수 있습니까?
이와 같은 일반 구문 오류가 발생하면 divide-and-conquer 방식을 사용하여 찾을 수 있습니다. 먼저'while/end' 루프를 주석 처리 할 수 있습니다. 더 이상 구문 오류가 없습니다! 다음은 'while/end' 루프 안의 줄을 주석 처리합니다. 오류 없음. 결국'i ++'가 주석 처리 될 때 문법 에러가 없다는 것을 알게 될 것이다. 'i.class => Fixnum'으로'Fixnum' 문서를 확인하십시오. ': ++'메소드가 없습니다! 'Fixnum.ancestors' 클래스 중 하나에있을 수 있습니까? 'Fixnum.instance_methods.include? (: ++) => false'는 '아니오'라고 말합니다. 하지만 왜 ': ++'메소드가 없습니까? Google "Ruby i ++". 추신 :'require 'time'을 보여줘야합니다. –