Technologieaustausch

[Likou] Eine Frage pro Tag – Frage 70, Treppensteigen

2024-07-12

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

Thema:

Angenommen, Sie steigen Treppen. Es dauert n Schritte, bis Sie die Spitze des Gebäudes erreichen.

Sie können 1 oder 2 Stufen gleichzeitig erklimmen. Auf wie viele verschiedene Arten kann man auf die Spitze eines Gebäudes klettern?

Idee:

Ich habe zuerst eine Funktion geschrieben, um die Anzahl der Personen zu berechnen, die den ersten und zweiten Stock erklimmen, und sie dann arrangiert und summiert, aber sie lag außerhalb des Bereichs. Später habe ich den Bereich geändert, aber das Ergebnis war falsch.

Ich weiß nicht warum,

Als ich mir später die Ergebnisse ansah, kamen sie mir immer bekannter vor. Ist das nicht die Fibonacci-Folge?

Es wird später passieren

Ergebniscode:

  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. }

Mach weiter so! ! ! ! ! ! !

Mein Kopf ist leer.

Wenn es eine bessere Lösung gibt, lassen Sie es mich bitte wissen, danke!

Fügen Sie eine rekursive Methode hinzu:

Rekursives Denken:

Dasselbe wie bei der Fibonacci-Sequenz, das heißt, es wird Rekursion verwendet, um Fibonacci zu schreiben und schließlich auszugeben

Siehe 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. }

Ich hoffe, dass es mir heute besser geht als gestern!

Weitermachen! !