```
int sum(int n)
{
if(n==0)
return n;
else
return n+sum(n-1); /*self call to function sum() */
}
```

Can anyone please explain to me how it sums up with the previous value each time it enters the sum(int n) function. I mean, in 'return n+sum(n-1)', how does the 'n+' part gets into the next cycle when sum(n-1) is invoked?