Return to Russia

Here's Russian with a for loop. Why does this work?

int Russian(int a, int b)
//  implements Russian Peasant Algorithm
{
   int x = a, y = b, z = 0, i;
   for (i = 0; i < log(a); i++)
   {
      if ( 1 == x % 2)
         z += y;
      y <<= 1;
      x >>= 1;
   }
   return z;        
}

Upper bound is easy.


next up previous
Next: Recursive Up: METHODS OF ANALYSIS Previous: Language-Oriented Analysis