问题描述:
一根拉面,中间切一刀,可以得到2根面条。
先对折1次,中间切一刀,可以得到3根面条。
连续对折2次,中间切一刀,可以得到5根面条。那么如果连续对折10次,中间切一刀,会得到多少根面条?
Regra 1
Assumindo que o número de dobras é X , e o número de macarrão obtido após um corte no meio é Y , as seguintes regras podem ser obtidas através da observação:
Número de dobras ao meio X | Número de macarrão Y | lei |
---|---|---|
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 |
Escreva o código de acordo com as regras conhecidas para calcular o número de macarrão quando dobrado ao meio 10 vezes:
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 + '根!');
}
Lei 2
Após observação adicional, verifica-se que o número de dobras X e o número de noodles Y obedecem a uma regra: Y = 2^x + 1
, e o mesmo resultado é obtido após a execução do código:
var count = 0; // 根数
var fold = 10;
count = Math.pow(2, fold) + 1;
console.log('===> 折叠10次,得到' + count + '根面条!') ;
// ===> 折叠10次,得到1025根面条!
Método Math.pow(x, y)
O método Math.pow(x, y) é usado para cálculos exponenciais , onde o parâmetro X é a base e Y é o expoente.