It's not exhaustive, or it would be there forever. Patches welcome for better search algorithms. View Source for the Javascript.
Not forever, at least for 3 resistors. Brute force of all combinations of three resistors from six decades of E24 is just under 3 million combinations. Just over 3 million if you add 0 and ∞ as options. Multiply that by the four possible configurations "a + b + c", "a + (b || c)", "a || (b + c)", "a || b || c" and you've got 12 million. That's fraction of a second on modern JIT'd JavaScript.
Sure, it will start to add up at 4 resistors, but I don't think there's any point unless the component tolerance is amazing. Even just 3 resistors in series is guaranteed to get you theoretically to within 0.1% of the desired value -- the first resistor gets you to within 10%-12.5%, and each additional one cuts the error by a factor of 8-10, plus the last resistor can tweak for just above or just below the desired value.
That doesn't even require a search.
e.g. my 228.10345 example
R1: 220, total 220, error -8.10345, -3.55%
R2: 7.5, total 227.5, error -0.60345, -0.26%
R3: 0.62, total 228.12, error -0.01655, +0.007%
This might not be practical, for example because you can't actually get a 0.62 ohm resistor. But if you can then one practical aspect of this construction is that only R1 has to have super high precision. e.g. R1 0.1%, R2 1%, R3 10% would not be noticeably worse than all three being 0.1%.
Doing an exhaustive search can of course only improve the results.
Or, you could do an all-parallel construction in the same way:
R1: 240, total 240, error +11.89655, +4.96%
R2: 4k7, total 228.34, error +0.23663, +0.104%
R3: 220k, total 228.10333, error -0.00012, -0.00005%
That's worked out much more accurate. I don't know that's always going to be the case, or just what happened in this example.
And, again, that's not a search. It's merely using each added resistor to correct the error in the total of the previous resistors. It's a direct calculation I did with a handheld 4 function calculator.