# Version 1 def enigme1(r): while len(r) > 1: print(r) r = [v * r[i+1] + 1 for i,v in enumerate(r[:-1])] return r # Version 2 recursive def enigme2(r): if len(r) == 1: return r[0] return enigme2([v * r[i + 1] + 1 for i,v in enumerate(r[:-1])]) data = [3, 2, 2, 4] print(enigme1(data)) print("-" * 10) print(enigme2(data))