This was interesting, but when you think about it, this isn't really a flaw as much as something inherent to the way it was designed.
Imagine you had some combinations of functions f, g, and h such that f(g(h(x))) = y. Obviously you could calculate that as h(x) -> g(h(x)) -> f(g(h(x)) = y, but then of course knowing h(x), or g(h(x)) would enable you to find y as well. So of course, due to the recursive nature of it, picking any set of inputs that were the outputs of a previous call would give you the same output.
That argument doesn't exactly fit multiple inputs, but the idea is the same.