package org.drools.evaluation declare Fibonacci value : Long sequence : Integer end rule Recurse salience 10 when f: Fibonacci (value == -1) not Fibonacci (sequence == 1) then insert ( new Fibonacci( -1L, f.getSequence() - 1) ); System.out.println( "recurse for " + f.getSequence()); end rule Bootstrap when f: Fibonacci ( sequence == 1 || sequence == 2, value == -1) then f.setValue( 1L); update( f); System.out.println (f.getSequence() + " == " + f.getValue()); end rule Calculate when f1 : Fibonacci( s1: sequence, v1: value != -1) f2 : Fibonacci( s2: sequence == (s1 + 1), v2: value != -1) f3 : Fibonacci( s3: sequence == (s2 + 1), value == -1) then f3.setValue( v1 + v2); update( f3); System.out.println( s3 + " == " + f3.getValue()); end