Recursive Fibonacci with Generic delegates
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.