First of all the answer to this question is :
10 20 40 80 160 320 640 1280 2560 2560 1280 640 320 160 80 40 20 10
At the initial call print(10) is called, the if (n > 4000) is not true and it prints the next statement i.e printf("%d ", n); ie
Output : 10
For convenience and understanding i am gonna number the statements from
1 if (n > 4000)
2 return;
3 printf("%d ", n);
4 print(2*n);
5 printf("%d ", n);
The printf in stat 3 is executed till n =2560 . As soon as print(2560*2) is called ie n becomes 5120. Now the statement 1 returns true and returns to the previous callee at statement 5 with n = 2560, prints that and that function exits to the previous callee with n to be 2560 and so on ..
Let me know if u still have confusions