0

```
#include <iostream>
using namespace std;
typedef unsigned short ushort;
typedef unsigned long ulong;
ulong power(ushort, ushort);
int main()
{
ushort x,y;
ulong z;
cin>> x; cin>> y;
z=power(x,y);
cout<< z;
return 0;
}
ulong power(ushort i, ushort j)
{
if (j==1) return i;
[B]else return (i * power(i, j-1)); [/B]
}
```

cant seem to understand the highlighted part. i mean, the function isnt yet finished and i is already getting some value of it. it works correctly, but could someone explain the way it actually computes?