Please can anyone explain me this recursion code? : <pre><code>#include &lt;stdio.h&gt;
int fun(int,int *);
int main()
{
 int x = 5; // variable x and its value is 5
printf("%d,the value of fun is:",fun(5,&amp;x));
return 0;
}
int fun(int n,int *fp)
{
  int t,f;

  if(n &lt;=1)
   {
    *fp = 1;
    return 1;
   }
  t = fun(n-1,fp);
  f = t + *fp;
  *fp = t;
  return (f);
 }
</code></pre>

<p>I had a test in which this code output was being asked.
Output is 8.But i am not being able to understand the logic of this code. </p>
