Im Lösen eines Rekursionsproblems, in dem die Funktion int Treppe (int n) die Anzahl der Möglichkeiten beim Treppensteigen auf n zurückgibt, mit den Bedingungen von entweder 1 Schritt oder 2 Schritte. Der folgende Code löst dieses Problem:Möglichkeiten des Kletterns n Treppen mit einem Zwang auf dem 20. Stock
int stairs(int n)
{
if (n<0) return 0;
if (n==0) return 1;
return stairs(n-1) + stairs(n-2);
}
Jetzt habe ich eine Einschränkung, die besagt: Wenn Sie den 20. Stock zu erreichen, müssen Sie einen Aufzug benutzen, die Sie automatisch den ganzen Weg bis zum n-ten Etage nimmt. Wenn du aus irgendeinem Grund Level 20 überspringst (zum Beispiel Level 19 erreichen und dann 2 Etagen bis Level 21 hochsteigen), fahre wie gewohnt fort. Suchen Sie die Anzahl der Möglichkeiten für die obige Einschränkung. Was ich bisher getan, ist dies:
int stairs20(int n)
{
if (n<=20) return stairs(n);
return stairs(20) + stairs(n-21);
}
Die Logik hinter dem Code ist die Anzahl der Möglichkeiten in dem Erreichen des 20. Etage, und die Anzahl der Möglichkeiten von der 21. Etage und bis zu berechnen. Ich nehme an, dass dies nicht die richtige Antwort findet und würde mich beraten lassen, wo ist mein Fehler oder was berechne ich nicht?
„den ganzen Weg bis zum n-ten Etage.“ - Was ist n? –
Fragen Sie sich: Welche Levels haben spezielle Regeln? Schreibe dann die Logik für sie. –
HINWEIS: 'int' kann keine so großen Werte speichern. Erinnere dich, es ist die Fibonacci-Sequenz. –