Re: коммивояжёр

From
Vladimir Vassilevsky (2:5020/175.2)
To
Mike Bolshakoff
Date
2003-01-17T17:20:28Z
Area
RU.ALGORITHMS
From: "Vladimir Vassilevsky" <vlv@fullnet.net>

Hi Mike,


 >>  >> unsigned int Factorial(unsigned int n)
 >>  >> {
 >>  >> unsigned int i,f = 1;
 >>  >>
 >>  >> for(i = 2; i <= n; i++) f *= i;
 >>  >>
 >>  >> return f;
 >>  >> }
 >> 
 >>  VL>  Ну кто же так неэффективно факториал считает?!? Позор!
 >> 
 >> И как лучше?

 MB> UNIT Factorial(UNIT n)
 MB> {
 MB>     if(n) // или if(n > 1)
 MB>     {
 MB>         for(UNIT f = n; --n; f *= n);
 MB>         return(f);
 MB>     }
 MB>     else
 MB>         return(1);
 MB> }

 Это к тому, что на большинстве архитектур сравнение с нулем менее 
 затратно, чем сравнение с константой или сравнение двух переменных. 
 Зато у тебя на одну итерацию больше, да еще и сравнение вначале :)

 VLV
 

"Хотели как лучше - получилось как всегда.   (с) В. С. Черномырдин"

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)