τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Η ακολουθία που σχηματίζεται από αριθμούς Fibonacci (συνήθως αντιπροσωπεύεται από F(n)) ονομάζεται ακολουθία Fibonacci.Η ακολουθία ξεκινά με 0 και 1 και ακολουθεί
Κάθε αριθμός μέσα είναι το άθροισμα των δύο προηγούμενων αριθμών. Αυτό είναι:
F(0)=0,F(1)=1
F(n)=F(n -1)+ F(n- 2), όπου n>1, δεδομένου n(0 ≤n≤ 30), υπολογίστε το F(n)
Αφού λάβουμε αυτήν την ερώτηση, ας δούμε πρώτα το εύρος της ερώτησης, το οποίο δεν πρέπει να υπερβαίνει το 30. Αυτό συμβαίνει επειδή ο ρυθμός αύξησης των αριθμών Fibonacci είναι πολύ γρήγορος.
Γρήγορα, εκθετικά. Έτσι, εάν το n είναι μεγάλο, θα υπερβεί το εύρος των ακεραίων 32-bit στη γλώσσα C.Αυτή είναι η πιο βασική παράδοση
Σας έχουμε ήδη πει την ερώτηση έκπτωσης και τον τύπο αναδρομής Το μόνο που έχουμε να κάνουμε είναι να χρησιμοποιήσουμε έναν βρόχο για να εφαρμόσουμε αυτήν την αναδρομή.
Χρειάζεται μόνο να χρησιμοποιήσουμε έναν πίνακα F[31], να αρχικοποιήσουμε τα F[0] και F[1] και στη συνέχεια να τον υπολογίσουμε σε βρόχο σύμφωνα με τον συγκεκριμένο τύπο.
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]
}
Η ακολουθία Tabonacci Tn ορίζεται ως εξής:
Τ(0) = 0, Τ(1) = 1, Τ(2)=1
Και υπό την προϋπόθεση n>2, T(n)=T(n-1)+T(n-2)+T(n-3), δίνοντάς σας τον ακέραιο n, παρακαλούμε επιστρέψτε το nο Tabonacci
Η τιμή του αριθμού T(n).
Εάν καταλαβαίνετε ήδη την ακολουθία Fibonacci, τότε αυτό το πρόβλημα δεν είναι δύσκολο, αλλά κατά την προετοιμασία, πρέπει να αρχικοποιήσετε τους τρεις πρώτους αριθμούς.
Και κατά τον υπολογισμό της επανάληψης βρόχου, η τιμή του τρέχοντος αριθμού απαιτεί το σωρευτικό άθροισμα των τιμών των τριών προηγούμενων αριθμών. σαν αυτό:
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];
}
Προβλήματα όπως η ακολουθία Fibonacci μπορούν να λυθούν με έναν μονοδιάστατο πίνακα Μερικές φορές, όταν μια διάσταση δεν μπορεί να το λύσει, I
Πρέπει να δούμε το πρόβλημα από μια υψηλότερη διάσταση.
Το μήκος είναι n(1
Αλλά δεν πρέπει να υπάρχουν άλλοι χαρακτήρες) και απαγορεύεται να υπάρχει το Μ δίπλα στο άλλο Πόσα είδη τέτοιων χορδών υπάρχουν;
Σκεφτείτε ότι το μήκος είναι n, και υπάρχουν f[n][0] είδη συμβολοσειρών που τελειώνουν με 'A', f[n][1] είδη συμβολοσειρών που τελειώνουν με 'C' και υπάρχουν f[n][ 1] είδη χορδών που τελειώνουν με ''
f[n][2] είδη
Αριθμοί Fibonacci(συνήθως χρησιμοποιείταιF(n)
αντιπροσωπεύει) καλείται η ακολουθία που σχηματίζεταιΑκολουθία Fibonacci .Αυτή η ακολουθία αποτελείται από0
και1
Αρχικά, κάθε επόμενος αριθμός είναι το άθροισμα των δύο προηγούμενων αριθμών.
int fib(int n){
if(n == 0){
return 0;
}
else if (n == 1){
return 1;
}
return fib(n - 1) + fib(n - 2);
}
Ας υποθέσουμε ότι ανεβαίνετε σκάλες.χρειάζομαιn
Μπορείτε να φτάσετε στην κορυφή του κτηρίου κάνοντας βήματα.
κάθε φορά που μπορείτε να σκαρφαλώσετε1
ή2
ένα βήμα. Με πόσους διαφορετικούς τρόπους μπορείτε να ανεβείτε στην κορυφή ενός κτιρίου;
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];
}
Δεδομένου ενός μη αρνητικού δείκτηrowIndex
, επιστροφή στο τρίτο σημείο του "Τρίγωνο Yang Hui"rowIndex
ΕΝΤΑΞΕΙ.
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;
}