蓝桥杯练习1-切面条

问题描述:
一根拉面,中间切一刀,可以得到2根面条。
先对折1次,中间切一刀,可以得到3根面条。
连续对折2次,中间切一刀,可以得到5根面条。那么如果连续对折10次,中间切一刀,会得到多少根面条?

规律1

假设对折次数为X,中间切一刀后得到的面条根数为Y,经过观察得出下面的规律:

对折次数 X 面条根数 Y 规律
0 2 2 = 2
1 3 3 = 2 + 2^0
2 5 5 = 2 + 2^0 + 2^1
3 9 9 = 2 + 2^0 + 2^1 + 2^2

根据已知规律编写代码,计算对折10次时的面条根数:

var count = 0; // 根数
var fold = 10;
for (let index = 0; index <= fold; index++) 
{
     if(index == 0)
     {
         count += 2;
     }
     else
     {
         count += Math.pow(2, index - 1);
     }
    console.log('===>折叠'+ index + '次,得到' + count + '根!');
}

蓝桥杯练习1-切面条_第1张图片

规律2

经过进一步观察,发现折叠次数X与面条根数Y符合一个规律:Y = 2^x + 1,代码运行后得到同样结果:

var count = 0; // 根数
var fold = 10;
count = Math.pow(2, fold) + 1;
console.log('===> 折叠10次,得到' + count + '根面条!') ;
// ===> 折叠10次,得到1025根面条!
Math.pow(x, y)方法

Math.pow(x, y)方法,用来进行指数计算,其中参数X是底数,Y是指数。

你可能感兴趣的:(算法,蓝桥杯,算法)