An algorithm to generate all connectible pair combinations
Model the whole thing as a directed graph.


Currences are nodes.
Conversions are edges.
Conversion factors are edge weights.


So, in your example, you'd have nodes EUR and USD, and edges from EUR to USD with weight 2  resp. from USD to EUR with weight 1/2.

Now, every (directed) path from one currency to another represents a potential series of conversions, and the total conversion factor is the product of all traversed edge weights.

Note that, in general, there are super-exponentially many such paths so you probably do not want to list them all. Furthermore, finding the "longest" path may be NP-hard.