- 1
- 2
- 3
- 4
- 5
- 6
- 7
Func<int,int> fact = (int i_in) => i_in;
fact = (int i_in) =>
{
if (i_in>1) return (fact(i_in-1)*i_in);
else return (1);
};
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
Func<int,int> fact = (int i_in) => i_in;
fact = (int i_in) =>
{
if (i_in>1) return (fact(i_in-1)*i_in);
else return (1);
};
HiewMorjowie 29.01.2016 20:13 # −1
1024-- 29.01.2016 20:23 # −1
HiewMorjowie 29.01.2016 20:37 # −1
1024-- 29.01.2016 20:58 # +1
Почти что эволюция хаскель-программиста, только тут:
1. Школьник: for(var i=1; i<=n; i++) f *= i;
2. Студент: с рекурсией как в этом ГК
3. Выпускник: мемоизация
4. Кандидат наук: флаги компилятора, ассемблер, регистры, ксор(?)
5. Доктор наук: факториал на ПЛИС
6. Академик РАН: for(var i=1; i<=n; ++i) f *= i;
bot 29.01.2016 23:16 # −1
bormand 29.01.2016 23:18 # +1
bormand 29.01.2016 22:17 # −1
bormand 29.01.2016 22:22 # +4
P.S. https://gmplib.org/manual/Factorial-Algorithm.html Оп-па, про вторую часть с prime sieving я не знал. Заметим, что все эти скобки одинаково начинаются, что ещё сэкономит время (т.е. t1 = 1 * 3 * 5, t2 = t1 * 7 * 9, 10! = t1 * t2 * 2^8). Ну а все двойки добавляются в самом конце, тупо одним побитовым сдвигом.
tucvbif 29.01.2016 20:37 # −1
nihau 30.01.2016 01:09 # −1
Him: Let me get that factorial
Barber: say no more