编程知识 cdmana.com

J'a I construit un escalier pour aller sur la lune, combien de façons puis - je poursuivre la sœur Chang'e?

Je participe au concours de contributions créatives de la mi - automne,Pour plus de détails, voir:Concours de contributions créatives de la mi - automne

Préface

J'ai réfléchi hier soir. , Pensez à un article sur la mi - automne ? Mais je ne vois que Chang'e. , Alors j'ai pensé Chang'e se précipite vers la lune, En d'autres termes, quelle est la route de Chang'e vers la lune? ? Si je construisais un escalier vers la lune, , Et construit avec succès , Combien de façons d'atteindre la lune? , Où est ma sœur Chang'e? ?

Comment

Parce que mes jambes sont courtes , Les escaliers ne peuvent être parcourus qu'une seule fois 2Un pas, Si les escaliers totalisent 3Un pas,Ou2Un pas, Je ne peux prendre les escaliers que comme ça. . Si le nombre de marches est différent , En fait, le nombre total de façons est différent. .

1631599280(1).png

Escalier vers la lune

C'est bon, Commençons à calculer. , Si je construis un escalier vers la lune, , Combien de marches y a - t - il dans cet escalier? ?

Distance de la lune

J'ai d'abord vérifié les données. , La distance entre la terre et la lune est 38.410 000 mètres,C'est - à - dire384000000M

1631599622(1).png

Hauteur et largeur de chaque étape

J'ai couru jusqu'à l'escalier de la compagnie. , Mesure spéciale de la hauteur et de la largeur de chaque escalier , Parce que je n'ai pas de règle. , J'ai utilisé mes chaussures comme règle.

1631599966(1).png

1631599952(1).png

Comme vous pouvez le voir,, Aussi large qu'une chaussure. , C'est à peu près la hauteur de mes chaussures. 1/2, Mes chaussures sont 42No.,26cm, C'est - à - dire que chaque étape a une largeur de 26cm,La hauteur est13cm

1631600281(1).png

Combien de marches au total ?

D'abord, en utilisant le théorème de Pythagore, on obtient que la ligne oblique de chaque étape est 29cm,Et puis3840000000 / 0.29 = 13241379300 J'ai calculé qu'il y avait tant d'escaliers vers la lune.

1631600683(1).png

Plusieurs façons

Craquage violent

let depth = 0; 
function climbStairs(n) {
    //  Pile anti - explosion 
    ++depth;
    if (depth > 1000) {
        throw new Error(' Attention à la pile. ');
    }

    if (n < 1) {
        return 0;
    }
    if (n == 1) {
        return 1;
    }
    if (n == 2) {
        return 2;
    }
    return climbStairs(n - 2) + climbStairs(n - 1);
}

console.log(climbStairs(13241379300)) //  Ça a explosé.  Je l'essuie. 
// throw new Error(' Attention à la pile. ');
// ^Error:  Attention à la pile. 
Copier le Code

Fibonacci

var climbStairs = function(n) {
  let arr = new Array(n).fill(0)
  arr[0] = 1
  arr[1] = 1
  for (let i = 2; i <= n; i++) {
      arr[i] = arr[i - 1] + arr[i - 2]
  }
  return arr[n]
};

console.log(climbStairs(13241379300)) // Erreur directe Je l'essuie.
// let arr = new Array(n).fill(0)
// ^

// RangeError: Invalid array length
Copier le Code

Planification dynamique

function climbStairs(n) {
  if (n < 1) {
      return 0;
  }
  // base case
  if (n === 1) {
      return 1;
  }
  if (n === 2) {
      return 2;
  }

  //  Parce que les transitions d'état ne concernent que les résultats de la dernière itération et de la dernière itération , Donc il n'y a que deux variables à stocker , Pas besoin de tableaux , Espace réduit 
  let pre = 1;
  let cur = 2;

  for (let i = 3; i <= n; i++) {
      let sum = pre + cur;
      pre = cur;
      cur = sum;
  }

  return cur;
}

console.log(climbStairs(13241379300)) // Infinity Infini,Je l'essuie.
Copier le Code

Ne jamais abandonner !!!

Je ne peux pas abandonner Chang'e. !!! Je vais me précipiter. !!!

Je pensais,C'est ça?JavaScript Je ne peux pas tenir un si grand nombre. ?

Alors je me suis précipité vers mes amis dans d'autres langues

1631603947(1).png

1631604056(1).png

On me l'a dit.,java Je ne supporte pas un tel nombre. ,J'ai pleuré.!!!

Ploïdisation !!!

1631604684(1).jpg

C'est impossible, Je me souviens de la doublure de Ninja. , Je me suis agrandi moi - même et les escaliers 10 millions de fois. , C'est comme ça.

1631604551(1).jpg

function climbStairs(n) {
  if (n < 1) {
      return 0;
  }
  // base case
  if (n === 1) {
      return 1;
  }
  if (n === 2) {
      return 2;
  }

  //  Parce que les transitions d'état ne concernent que les résultats de la dernière itération et de la dernière itération , Donc il n'y a que deux variables à stocker , Pas besoin de tableaux , Espace réduit 
  let pre = 1;
  let cur = 2;

  for (let i = 3; i <= n; i++) {
      let sum = pre + cur;
      pre = cur;
      cur = sum;
  }

  return cur;
}

console.log(climbStairs(1324)) // 3.6235839641122446e+276
Copier le Code

Je l'ai fait.3.6235839641122446e+276 Pour atteindre la sœur Chang'e. ,Oui.!!

Conclusion

Qui peut m'aider à trouver combien de types il y a? .. Je veux savoir quel est le nombre infini .. Dis - le - moi dans la zone de message. .. Il y a une récompense. ..

Si vous pensez que cet article vous aidera un peu,Fais - moi plaisir., Encouragez Lin Sanxin. . Ou peut - être rejoindre mon groupe de pêcheurs. Vouloir entrer dans le Groupe d'étude ,Groupe de pêche,Cliquez iciPêche Rejoignez le Groupe de pêche , J'ai des interviews en direct. ,Répondre aux questions et répondre aux questions

image.png

版权声明
本文为[SunshineLin]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/09/20210914162236097M.html

Scroll to Top