Anonymous recursion: Difference between revisions

(Added K Example)
Line 60:
{ return n < 0 ? "error" : n < 2 ? 1 : n * fib(n-1)
}</lang>
 
=={{header|C}}==
Using scoped function fib_i inside fib, with GCC:
<lang C>#include <stdio.h>
 
long fib(long x)
{
long fib_i(long n) { return n < 2 ? n : fib_i(n - 2) + fib_i(n - 1); };
if (x < 0) {
printf("Bad argument: fib(%ld)\n", x);
return -1;
}
return fib_i(x);
}
 
long fib_i(long n) /* just to show the fib_i() inside fib() has no bearing outside it */
{
printf("This is not the fib you are looking for\n");
return -1;
}
 
int main()
{
long x;
for (x = -1; x < 4; x ++)
printf("fib %ld = %ld\n", x, fib(x));
 
printf("calling fib_i from outside fib:\n");
fib_i(3);
 
return 0;
}</lang>
Output:<pre>Bad argument: fib(-1)
fib -1 = -1
fib 0 = 0
fib 1 = 1
fib 2 = 1
fib 3 = 2
calling fib_i from outside fib:
This is not the fib you are looking for</pre>
 
=={{header|C++}}==
Anonymous user