Забавная рекурсия
Не сразу понятно, что функция находит ближайшую степень двойки, недостатки такого подхода очевидны:
int ToPow2(int i)
{
if( i == 2 || i == 4 || i == 8 || i == 16
|| i == 32 || i == 64 || i == 128
|| i == 256 || i == 512 || i == 1024 )
return i;
else
return ToPow2(i+1);
}