Я пытаюсь использовать инъекцию Руби для суммирования массива, представляющего конечную непрерывную дробь, где
[a, b, c, d, e, ... , x] = a + 1/(b + 1/(c + 1/(d + 1/(e + ... 1/x)...)))
Я не могу понять, как получить правильную вложенную оценку, чтобы вернуть правильное значение, используявпрыснуть.
Вместо этого, то, что я написал, просто возвращает плоскую сумму терминов, а не вложенную сумму.Например,
total = [0, 2, 1, 12, 8].inject do |sum,x|
sum = sum + Rational(1,x)
end
puts total
#=> 41/24
То есть 0 + 1/2 + 1/1 + 1/12 + 1/8 #=> 41/24
вместо 0 + 1/(2 + 1/(1 + 1/(12+1/8))) #=> 105/307
, что является правильным значением.
Возможно ли вычислить сумму этого типа с помощью метода ввода?
Если нет, то как я могу его правильно вычислить?