def recursion(x):
if x == 0:
return 0
else:
return x << 1 + recursion(x - 1)
print(recursion(3)) # 393216
print(3 << 1) # 6
print(2 << 1) # 4
print(1 << 1) # 2
Dans ma tête, la sortie de la fonction récursive doit être: 12 (6 + 4 + 2) Pourquoi est-ce pas le cas? Je dois dire que "393216" est légèrement plus grand que mon nombre attendu "12".fonction Recursion (avec décalage de bits)
Mon attente:
--> return 1<<1==2 for 1
--> return 2<<1==4 for 2
--> return 3<<1==6 for 3
0 --> return 0 for 0
Tous ensemble = 12
correction rapide, bitshifts ont une priorité plus faible, pas plus fort. –
@ Shiva Oups, faute de frappe oui, fixé merci. – miradulo