in the nonrecursive version, a retrn value of 2 means this call has completed; in this version an "implicit" exit then occurs; this must be made explicit in the implementation

towers(n-1,a,i,f);