#include <tc.h> #include <stdio.h> #include <stdlib.h> unsigned cfib (unsigned _n) { return _n < 2 ? _n : cfib(_n - 1) + cfib(_n - 2); } tfun void fib (unsigned _n, tout unsigned *_res) { if (_n < 32) { *_res = cfib(_n); } else { tval unsigned res1, res2; fib(_n - 1, &res1); fib(_n - 2, &res2); *_res = res1 + res2; } } int tmain (int argc, char* argv[]) { unsigned n; tval unsigned res; if (argc < 2) { #if 1 terrprint( "Usage:\n" "gr_fib <number>\n" ); #endif return -1; } n = (unsigned)atoi(argv[1]); fib(n, &res); (volatile unsigned)res; terrprint("fib(%u) = %u\n", n, res); return 0; }