#include <stdio.h>
unsigned f_re(unsigned n,unsigned *row,unsigned deep)
{
unsigned ret=n<2?1:f_re(n-2,row,deep+1)+f_re(n-1,row,deep+1);
printf("%*u: f(%u)=%u;\n",deep
+3,++*row
,n
,ret
); return ret;
}
unsigned f_er(unsigned n,unsigned *row,unsigned deep)
{
printf("%*u: f(%u);\n",deep
+3,++*row
,n
); return n<2?1:f_er(n-2,row,deep+1)+f_er(n-1,row,deep+1);
}
int main()
{
unsigned n,r=0;
printf("Drzewo wywolan dla ciagu rekurencyjnego:\n"); printf("Obliczony rekurencyjnie %d wyraz ciagu Fibonacciego wynosi: %d\n",n
,f_re
(n
,&r
,0)); r=0;
printf("Obliczony rekurencyjnie %d wyraz ciagu Fibonacciego wynosi: %d\n",n
,f_er
(n
,&r
,0)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp1bnNpZ25lZCBmX3JlKHVuc2lnbmVkIG4sdW5zaWduZWQgKnJvdyx1bnNpZ25lZCBkZWVwKQogIHsKICAgdW5zaWduZWQgcmV0PW48Mj8xOmZfcmUobi0yLHJvdyxkZWVwKzEpK2ZfcmUobi0xLHJvdyxkZWVwKzEpOwogICBwcmludGYoIiUqdTogZigldSk9JXU7XG4iLGRlZXArMywrKypyb3csbixyZXQpOwogICByZXR1cm4gcmV0OwogIH0KIAp1bnNpZ25lZCBmX2VyKHVuc2lnbmVkIG4sdW5zaWduZWQgKnJvdyx1bnNpZ25lZCBkZWVwKQogIHsKICAgcHJpbnRmKCIlKnU6IGYoJXUpO1xuIixkZWVwKzMsKysqcm93LG4pOwogICByZXR1cm4gbjwyPzE6Zl9lcihuLTIscm93LGRlZXArMSkrZl9lcihuLTEscm93LGRlZXArMSk7CiAgfQogCmludCBtYWluKCkKICB7CiAgIHVuc2lnbmVkIG4scj0wOwogICBzY2FuZigiJXUiLCZuKTsKICAgcHJpbnRmKCJEcnpld28gd3l3b2xhbiBkbGEgY2lhZ3UgcmVrdXJlbmN5am5lZ286XG4iKTsKICAgcHJpbnRmKCJPYmxpY3pvbnkgcmVrdXJlbmN5am5pZSAlZCB3eXJheiBjaWFndSBGaWJvbmFjY2llZ28gd3lub3NpOiAlZFxuIixuLGZfcmUobiwmciwwKSk7CiAgIHI9MDsKICAgcHJpbnRmKCJPYmxpY3pvbnkgcmVrdXJlbmN5am5pZSAlZCB3eXJheiBjaWFndSBGaWJvbmFjY2llZ28gd3lub3NpOiAlZFxuIixuLGZfZXIobiwmciwwKSk7CiAgIHJldHVybiAwOwogIH0=