#include <stdio.h>
int f[100];
int count=0;
void init();
void printfoo();
void printfoo()
{
int i;
for(i=0;i<10;i++)
}
void init()
{
int i;
for(i=0;i<100;i++)
f[i]=0;
}
double foo(int n)
{ count++;
int i;
double sum;
if(n == 0)
{
f[0]=1;
return 1.0;
}
else
{
sum = 0.0;
for(i = 0; i < n; i++)
{
if(f[i]!=0)
{
sum=sum+f[i];
continue;
}
sum += foo(i);
}
f[i]=sum;
return sum;
}
}
int main(void) {
double r;
init();
r=foo(5);
printf("\n Value of foo(5) is %lf",r
); printfoo();
printf("\n Function Called %d times for foo(5) ",count
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBmWzEwMF07CmludCBjb3VudD0wOwp2b2lkIGluaXQoKTsKdm9pZCBwcmludGZvbygpOwp2b2lkIHByaW50Zm9vKCkKewoJcHJpbnRmKCJcbiIpOwoJaW50IGk7Cglmb3IoaT0wO2k8MTA7aSsrKQoJcHJpbnRmKCJcdCVkIixmW2ldKTsKfQp2b2lkIGluaXQoKQp7CglpbnQgaTsKCWZvcihpPTA7aTwxMDA7aSsrKQoJZltpXT0wOwp9CmRvdWJsZSBmb28oaW50IG4pCnsgICBjb3VudCsrOwogICAgaW50IGk7CiAgICBkb3VibGUgc3VtOwogICAgaWYobiA9PSAwKQogICAgewogICAgICAgIGZbMF09MTsKICAgICAgICByZXR1cm4gMS4wOwogICAgfQogICAgZWxzZQogICAgeyAgIAogICAgICAgIHN1bSA9IDAuMDsKICAgICAgICBmb3IoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBpZihmW2ldIT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICBzdW09c3VtK2ZbaV07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdW0gKz0gZm9vKGkpOwogICAgICAgIH0KICAgICAgICBmW2ldPXN1bTsKICAgICAgICByZXR1cm4gc3VtOwogICAgfQoKfQoKaW50IG1haW4odm9pZCkgewoJZG91YmxlIHI7Cglpbml0KCk7CglyPWZvbyg1KTsKCXByaW50ZigiXG4gVmFsdWUgb2YgZm9vKDUpIGlzICVsZiIscik7CglwcmludGZvbygpOwoJcHJpbnRmKCJcbiBGdW5jdGlvbiBDYWxsZWQgJWQgdGltZXMgZm9yIGZvbyg1KSAiLGNvdW50KTsKCQoJcmV0dXJuIDA7Cn0K