Я полагаю, что значение 1 или Nan больше не определяется ни одним стандартом, поэтому решение остается за реализацией. Обратите внимание, что все эти утверждения выдают false:
Console.WriteLine("1>Nan {0}]", 1.0 > double.NaN);
Console.WriteLine("1<Nan {0}]", 1.0 < double.NaN);
Console.WriteLine("1>=Nan {0}]", 1.0 >= double.NaN);
Console.WriteLine("1<=Nan {0}]", 1.0 <= double.NaN);
То есть, если Max()
определяется как:
if (a<=b) return b else return a;
он вернет a, если ни один из аргументов не равен ниому.
if (a>b) return a else return b;
И это, также правильная реализация max всегда возвращает b, если любой из аргументов равен Nan.