im пытается сделать метод, который суммирует рациональные числа, но im застрял на одной части.Как завершить эту рекурсию в Scala?
class Rational(x: Int , y: Int) {
private def gcd(a: Int , b: Int) : Int = if (b == 0) a else gcd(b, a % b)
private val g = gcd(x, y)
def numer = x/g
def denom = y/g
def +(r: Rational) =
new Rational(numer * r.denom + r.numer * denom,
denom * r.denom)
override def toString = numer+"/"+denom
def sum (f: Rational => Rational)(a: Rational, b: Rational): Rational =
f(a) + sum(f)(a + 1, b)
У меня возникли проблемы, выясняя (а + 1, б) в моей суммы части, я получаю сообщение об ошибке, которое говорит несоответствие типов Int, я думаю, это потому, что его ожидает рациональное число, но я не знаю, как для преобразования или замены этого 1.
хорошо я определено> как. def> (это: Rational) = число * это.деном> это.numer * denom. который, я считаю, работает. теперь смущающая часть lol. Я не знаю, как это проверить. Я пытаюсь использовать x.sum (f) (a, b), im, предполагая, что a и b являются 2-ми рациональными, но он запрашивает у меня функцию, которую я не уверен, что там происходит. –
@ zerocool18 Аполы - я был АФК в течение нескольких часов - обновлялся с образцом. Я думаю, его спорный вопрос о том, является ли 'sum' в его текущем воплощении, как метод экземпляра на' Rational', учитывая, что он не использует ни одно из полей ... – StuartLC
я вижу сейчас !!! но когда я тестирую его, я получаю «основную» ошибку java.lang.StackOverflowError, что означает, что я ошибаюсь в рекурсии, поэтому закрыть lol –