1. número de Fibonacci
Todos sabemos que el número de Fibonacci, y ahora le pide que introduzca un entero n, que la salida del enésimo número de Fibonacci secuencia de Fibonacci del elemento (de 0, el primer 0 es 0). n <= 39
mi solución
Recursividad, en vscode correr un poco no es ningún problema, pero en el ganado fuera de Internet en la carrera demasiado tiempo. El funcionamiento es demasiado grande desbordamiento, pila.
function Fibonacci(n)
{
if(n == 0) return 0
if(n == 1) return 1
if(n>=2&&n<=39){
let x = Fibonacci(n-1)
let y = Fibonacci(n-2)
return x+y
}
return null
}
otros análisis
Solución a un problema que se menciona en muchos sentidos, programación dinámica, curry, la recursión de cola.
Programación Dinámica
artículo fuerza desgaste, escrito con mucha claridad
https://leetcode-cn.com/problems/fibonacci-number/solution/dong-tai-gui-hua-tao-lu-xiang-jie-by-labuladong/
function Fibonacci(n)
{
if(n == 0) return 0
if(n == 1) return 1
let pre = 0
let cur = 1
for(let i=2;i<=n;i++){
let sum = pre + cur
pre = cur
cur = sum
}
return cur
}
2. Las escaleras de salto
Una rana puede saltar en un nivel de 1 clase, también puede saltar en el nivel 2. La rana saltó en busca de un total de nivel de grado n el número de saltos (el orden de cálculo diferentes resultados diferentes).
mi solución
De hecho, lo anterior es que la pregunta, esta pregunta es una buena solución.
N = saltó saltó escaleras escaleras n-1 + saltar un salto en n-2 para saltar dos escaleras
Esto no es una variante de columnas de Fibonacci Pues bien, el uso de programación dinámica se pueden escribir, Por supuesto, también puede recursivas
function jumpFloor(number)
{
if(number == 1) return 1
if(number == 2) return 2
let pre = 1
let cur = 2
for(let i=3;i<=number;i++){
let sum = pre+cur
pre = cur
cur = sum
}
return cur
}
3. escaleras salto metamorfosis
Una rana puede saltar en un nivel de 1 clase, también puede saltar en el nivel 2 ...... n También puede saltar al escenario. La rana saltó en busca de un total de n del nivel de grado el número de saltos.
mi solución
Rana agotado. Esta pregunta no es como problemas de algoritmos, como un problema de matemáticas.
Saltar n etapas f (n) = f (n -1) + f (n-2) + ... + f (1)
etapa de salto n-1 f (n-1) = f (n-2) + f (n-3) + ... + f (1)
la resta de fase f (n) = 2f (n -1)
function jumpFloorII(number)
{
if(number == 1) return 1
let i = 1
while(--number){//注意这里是--number
i*=2
}
return i
}
suplemento
--a
Es de tipo pre-decremento, el valor de retorno después de decremento
a--
es el tipo de decremento posterior, devuelve el valor antes de decremento
var a = 3
var c = a--
console.log(a); //2
console.log(c); //3
var b = 3
var d = --b
console.log(b); //2
console.log(d); //2
Por lo tanto, mientras que el número de código se ha descrito anteriormente se determina después el valor de decremento, como el número de ciclos n 1-veces, si el número- escrito, el bucle n veces es
4. huella rectangular
Podemos utilizar 2 pequeño rectángulo 1 de los lados o verticalmente para cubrir un rectángulo más grande. ¿El uso de n2 pequeña cobertura rectángulo 1 sin solapamiento un gran rectángulo 2 * n, un total de cuántas maneras?
Por ejemplo, cuando n = 3, 2 * 3 baldosa está cubierta hay tres métodos
mi solución
Esta pregunta, naturalmente, puede pensar que 2 n-rectángulo es 2 (n - 1) más un rectángulo, sin duda, un poco como un número de Fibonacci, a continuación, que se resume dibujo. Puede ser derivada f (n) = f (n -1) + f (n-2), por supuesto, considerar el caso donde n es 1 y 2
function rectCover(number)
{
if(number == 0) return 0
if(number == 1) return 1
if(number == 2) return 2
let pre = 1
let cur = 2
for (let i=3;i<=number;i++){
let sum = pre+cur
pre = cur
cur = sum
}
return cur
}