5 Stimmen

Unendliche Schleife scala code

object Prop {
  def simplify(prop : Prop) : Prop = {
    prop match {
      case Not(Or(a,b)) => simplify(And(Not(a),Not(b)))
      case Not(And(a,b)) => simplify(Or(Not(a),Not(b)))
      case Not(Not(a)) => simplify(a)
      case _ => {
        if (simplify(prop) == prop) prop
        else prop
      }
    }
  }
}

Ich bin mir ziemlich sicher, dass ich eine Endlosschleife habe, die durch meinen "Standardfall" verursacht wird. Ich verwende in allen Fällen eine Rekursion. Das soll auch so sein, aber nur, wenn der Prop vereinfacht werden kann. Sobald das Prop nicht vereinfacht werden kann, sollte es das Ganze zurückgeben.

Ich wüsste nicht, wie ich eine weitere Vereinfachung prüfen könnte. (Ich bin nicht erlaubt, andere Bibliotheken zu verwenden, wie in freenodes #scala Kanal vorgeschlagen).

Kann jemand erklären, ob es der 'case _' ist, der die Schleife verursacht, und wie man das Problem löst? Wie kann ich auf eine mögliche Vereinfachung testen, ohne eine Schleife zu bilden?

Vielen Dank im Voraus!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X