resource mutually_recursive() # op fact(k : int) returns f : int, fiction(k : int) returns f : int # # This also works op fact(int) returns int, fiction(int) returns int # proc fact(k) returns f if k < 0 -> f := -1 [] k = 0 or k = 1 -> f := 1 [] k > 1 -> f := k * fiction(k-1) fi end fact proc fiction(k) returns f if k < 0 -> f := -1 [] k = 0 or k = 1 -> f := 1 [] k > 1 -> f := k + fact(k-1) fi end fiction var n: int writes("How many? "); read(n) fa i := 1 to n -> write(i, "fact is", fact(i), "and", i, "fiction is", fiction(i)) af end mutually_recursive /* ............... Example compile and run(s) % sr -o mutually_recursive mutually_recursive.sr % ./mutually_recursive How many? 5 1 fact is 1 and 1 fiction is 1 2 fact is 2 and 2 fiction is 3 3 fact is 9 and 3 fiction is 5 4 fact is 20 and 4 fiction is 13 5 fact is 65 and 5 fiction is 25 */