2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Die aus Fibonacci-Zahlen (normalerweise dargestellt durch F(n)) gebildete Folge wird Fibonacci-Folge genannt.Die Sequenz beginnt mit 0 und 1, gefolgt von
Jede Zahl in ist die Summe der beiden vorherigen Zahlen. Das ist:
F(0)=0,F(1)=1
F(n)=F(n -1)+ F(n- 2), wobei n>1, gegeben n(0 ≤n≤ 30), bitte berechnen Sie F(n)
Nachdem wir diese Frage beantwortet haben, schauen wir uns zunächst den Bereich der Frage an, der 30 nicht überschreiten sollte. Das liegt daran, dass die Wachstumsrate der Fibonacci-Zahlen sehr schnell ist.
Schnell, exponentiell. Wenn n also groß ist, überschreitet es den Bereich der 32-Bit-Ganzzahlen in der C-Sprache.Dies ist die einfachste Lieferung
Die Deduktionsfrage und die Rekursionsformel haben wir Ihnen bereits erklärt. Wir müssen lediglich eine Schleife verwenden, um diese Rekursion zu implementieren.
Wir müssen nur ein F[31]-Array verwenden, F[0] und F[1] initialisieren und es dann in einer Schleife gemäß der angegebenen Formel berechnen.
int febonacci(int n) {
int F[30] = {0,1};
for (int i = 2; i < 30; i++) {
F[i] = F[i - 1] + F[i - 2];
}
return F[29]
}
Die Tabonacci-Folge Tn ist wie folgt definiert:
T(0) = 0, T(1) = 1,T(2)=1
Und unter der Bedingung n>2, T(n)=T(n-1)+T(n-2)+T(n-3), was Ihnen die ganze Zahl n ergibt, geben Sie bitte den n-ten Tabonacci zurück
Der Wert der Zahl T(n).
Wenn Sie die Fibonacci-Folge bereits verstehen, ist dieses Problem nicht schwierig, aber beim Initialisieren müssen Sie die ersten drei Zahlen initialisieren.
Und während der Schleifeniterationsberechnung erfordert der Wert der aktuellen Zahl die kumulative Summe der Werte der vorherigen drei Zahlen. so was:
int tribonacci(int n) {
int F[30] = {0,1,1};
for (int i = 3; i < 30; i++) {
F[i] = F[i - 1] = F[i - 2] + F[i - 3];
}
return F[29];
}
Probleme wie die Fibonacci-Folge können mit einem eindimensionalen Array gelöst werden. Manchmal, wenn eine Dimension es nicht lösen kann, I
Wir müssen das Problem aus einer höheren Dimension betrachten.
Die Länge beträgt n(1
Es dürfen jedoch keine anderen Zeichen vorhanden sein und es ist verboten, M nebeneinander zu haben. Wie viele Arten solcher Zeichenfolgen gibt es?
Bedenken Sie, dass die Länge n ist und es f[n][0] Arten von Zeichenfolgen gibt, die mit „A“ enden, f[n][1] Arten von Zeichenfolgen, die mit „C“ enden, und es gibt f[n][ 1] Arten von Zeichenfolgen, die mit '' enden
f[n][2] Arten
Fibonacci-Zahlen(normalerweise verwendetF(n)
darstellt) wird die gebildete Folge aufgerufenFibonacci-Folge .Diese Sequenz besteht aus0
Und1
Zunächst ist jede weitere Zahl die Summe der beiden vorherigen Zahlen.
int fib(int n){
if(n == 0){
return 0;
}
else if (n == 1){
return 1;
}
return fib(n - 1) + fib(n - 2);
}
Angenommen, Sie steigen Treppen.brauchenn
Sie können die Spitze des Gebäudes über Treppen erreichen.
Jedes Mal, wenn du klettern kannst1
oder2
ein Schritt. Auf wie viele verschiedene Arten kann man auf die Spitze eines Gebäudes klettern?
int climbStairs(int n) {
int f[46];
f[0] = 1;
f[1] = 1;
for(int i = 2; i <= n; i++){
f[i] = f[i - 1] + f[i - 2];
}
return f[n];
}
Gegeben sei ein nicht negativer IndexrowIndex
, kehren Sie zum dritten Punkt des „Yang-Hui-Dreiecks“ zurückrowIndex
OK.
int* getRow(int rowIndex, int* returnSize) {
int f[34][34];
for(int i = 0; i <= rowIndex; i++){
for(int j = 0; j <= i; j++){
if(j ==0 || j == i){
f[i][j] = 1;
}
else {
f[i][j] = f[i - 1][j] + f[i - 1][j - 1];
}
}
}
int* ret = (int *)malloc (sizeof(int) * (rowIndex + 1));
for(int j = 0; j <= rowIndex; j++){
ret[j] = f[rowIndex][j];
}
*returnSize = rowIndex + 1;
return ret;
}