Funcの型推論も問題なんだけど、それより

Func<int,int> fact = x => x == 1 ? 1 : x * fact(x - 1);

これすらコンパイル通らないのが嫌なんだ
未割り当てのローカル変数が使われたと判断されてしまう

public staticメソッドなら型推論が効くから、

public static class New{
 public static Func<T1,TR> Func<T1, TR>(Func<T1,TR> func){ return func; }
}
 こんなのを作って

var f = New.Func( (int x) => x * x);

 こんなふうにやれば型パラメータは省略できる