Recursive Fibonacci with Generic delegates Here is a fast recursive Fibonacci-like for loop. How can it be more readable, and is it possible remove TArgs?  

public static class Fibonacci
{
    public static BigInteger Calculate(BigInteger number)
    {
        var fibo = AnonRecursiveFiboFunc&lt;BigInteger&gt;(
            func =&gt; (step, fibo1, fibo2) =&gt; step == number
            ? fibo2
            : func(++step, fibo1 + fibo2, fibo1));
        return fibo(0, 1, 0);
    }

    delegate Func&lt;TArg1, TArg2, TArg3, TArg4&gt;
        Recursive&lt;TArg1, TArg2, TArg3, TArg4&gt;(
        Recursive&lt;TArg1, TArg2, TArg3, TArg4&gt; r);

    private static Func&lt;TArg, TArg, TArg, TArg&gt; 
        AnonRecursiveFiboFunc&lt;TArg&gt;(Func&lt;Func&lt;TArg, TArg, TArg, TArg&gt;,
                                         Func&lt;TArg, TArg, TArg, TArg&gt;&gt; function)
    {
        Recursive&lt;TArg, TArg, TArg, TArg&gt; recursive = 
            rec =&gt; (step, fibo1, fibo2) =&gt; 
                function(rec(rec))(step, fibo1, fibo2);
        return recursive(recursive);
    }
}
I like to say T1 T2 instead of TArg1, it just makes it more clear to me what is going on. Your code would look more like this.

delegate Func&lt;T1, T2, T3, T4&gt; Recursive&lt;T1, T2, T3, T4&gt;( Recursive&lt;T1, T2, T3, T4&gt; r);

private static Func&lt;T, T, T, T&gt; AnonRecursiveFiboFunc&lt;T&gt;(Func&lt;Func&lt;T, T, T, T&gt;, Func&lt;T, T, T, T&gt;&gt; function)
{
    Recursive&lt;T, T, T, T&gt; recursive = rec =&gt; (step, fibo1, fibo2) =&gt; function(rec(rec))(step, fibo1, fibo2);
    return recursive(recursive);
}



Other than that... this code seems pretty solid, except for the crazy lack of immediate readability :D and like mentioned in the comments the fact that you are using delegates at all here.