In a distributed system, many algorithms need repeated computation of a global function. These algorithms generally use a static hierarchy for gathering necessary data from all processes. As a result, they are unfair to processes at higher levels of the hierarchy, who have to perform more work than processes at lower levels. In this paper, we present a new revolving hierarchical scheme, in which the position of a process in the hierarchy changes with time. This reorganization of hierarchy is achieved concurrently with its use. It results in algorithms that are not only fair to all processes, but also less expensive in terms of messages. The reduction in the number of messages is achieved by reusing messages for more than one computation of the global function. The technique is illustrated for distributed branch-and-bound problem, and for asynchronous computation of fixed points.