如题:
求一算法来代码如下计算方法switch (i) {
case 21:
num = 1;
break;
case 20:
num = 2;
break;
case 19:
num = 4;
break;
case 18:
num = 8;
break;
case 17:
num = 16;
break;
case 16:
num = 32;
break;
case 15:
num = 64;
break;
case 14:
num = 128;
break;
case 13:
num = 256;
break;
case 12:
num = 512;
break;
case 11:
num = 1024;
break;
case 10:
num = 2048;
break;
case 9:
num = 4096;
break;
case 8:
num = 8192;
break;
case 7:
num = 16384;
break;
case 6:
num = 32768;
break;
case 5:
num = 65536;
break;
case 4:
num = 131072;
break;
case 3:
num = 262144;
break;
case 2:
num = 524288;
break;
case 1:
num = 1048576;
break;
default:
num = 1;
break; }
求一算法来代码如下计算方法switch (i) {
case 21:
num = 1;
break;
case 20:
num = 2;
break;
case 19:
num = 4;
break;
case 18:
num = 8;
break;
case 17:
num = 16;
break;
case 16:
num = 32;
break;
case 15:
num = 64;
break;
case 14:
num = 128;
break;
case 13:
num = 256;
break;
case 12:
num = 512;
break;
case 11:
num = 1024;
break;
case 10:
num = 2048;
break;
case 9:
num = 4096;
break;
case 8:
num = 8192;
break;
case 7:
num = 16384;
break;
case 6:
num = 32768;
break;
case 5:
num = 65536;
break;
case 4:
num = 131072;
break;
case 3:
num = 262144;
break;
case 2:
num = 524288;
break;
case 1:
num = 1048576;
break;
default:
num = 1;
break; }
i=20-->2的1次方
..............
i=1-->2的20次方else 2的0次方
double d = (i > 0 && i < 22) ? Math.Pow(21 - i, 2) : 1;
double result = 0;
if (i >= 1 && i <= 21)
{
result = Math.Pow(2, 21 - i);
}
else
{
result = 1;
}
可以再优化优化,在上班没有办法多想,见谅。
{
console.writeline("此时i的值为:{0},num为:{1}",i,2^(21-i));
}
static void Main(string[] args)
{
for (int i = 21; i > 0; i--)
{
Console.WriteLine(Test(i));
}
Console.Read();
} static int Test(int i)
{
int temp = 21 - i;
int result = 1;
while (temp > 0)
{
result = result * 2;
temp--;
}
return result;
}
{
num=2;
for(int j=1;j<(21-i);j++)
{
num=num*2;
}
}
else
num=1;
这个算法可以,试过的。