Partage de technologie

[Likou] Une question par jour — Question 70, Monter les escaliers

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

sujet:

Supposons que vous montiez des escaliers. Il vous faut n marches pour atteindre le sommet du bâtiment.

Vous pouvez monter 1 ou 2 marches à la fois. De combien de manières différentes peut-on grimper au sommet d’un immeuble ?

Idée:

J'ai d'abord écrit une fonction pour calculer le nombre de personnes montant les premier et deuxième étages, puis je les ai organisés et additionnés, mais c'était hors de portée. Plus tard, j'ai changé la plage, mais le résultat était faux.,,,.

Je ne sais pas pourquoi,

Plus tard, lorsque j’ai regardé les résultats, ils m’ont semblé de plus en plus familiers. N’est-ce pas la séquence de Fibonacci ?

Cela arrivera plus tard

Code résultat :

  1. int climbStairs(int n) {
  2.   //int n,j;
  3.   int sum=0;
  4.   //scanf("%d",&n);
  5.   int f_1=1;
  6.   int f_2=2;
  7.   int f_n=0;
  8.   //int f_n_1=0;
  9.   if(n==0||n==1||n==2)
  10.   {
  11.       return n;
  12.   }
  13.   for(int i=1;i<=n-2;i++)
  14.   {
  15.       f_n=f_1+f_2;
  16.       //f_n_1=f_n+f_2;
  17.       f_1=f_2;
  18.       f_2=f_n;
  19.   }
  20.   return f_n;
  21.   // return 0;
  22.    
  23. }

Continuez votre bon travail ! ! ! ! ! ! !

Ma tête est vide.

S'il existe une meilleure solution, faites-le-moi savoir, merci !

Ajoutez une méthode récursive :

Pensée récursive :

Identique à la séquence de Fibonacci, c'est-à-dire utiliser la récursion pour écrire Fibonacci, et finalement afficher

Voir le code :

  1. int *func(int n,int* f_n,int f_1,int f_2)
  2. {    
  3.   --n;
  4.   if(n == -1)
  5.       return n;  
  6.   f_n[n] = f_1+f_2;
  7.   f_1 = f_2;
  8.   f_2 = f_n[n];
  9.   func(n,f_n,f_1,f_2);
  10.   return f_n;
  11. }
  12. int climbStairs(int n) {
  13.    
  14.   int f_n[n];
  15.   func(n,f_n,0,1);
  16.   return f_n[0];
  17. }

J'espère que je vais mieux aujourd'hui qu'hier !

Continue! !