τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Ας υποθέσουμε ότι ανεβαίνετε σκάλες. Χρειάζονται n βήματα για να φτάσετε στην κορυφή του κτηρίου.
Μπορείτε να ανεβείτε 1 ή 2 σκαλιά τη φορά. Με πόσους διαφορετικούς τρόπους μπορείτε να ανεβείτε στην κορυφή ενός κτιρίου;
Πρώτα έγραψα μια συνάρτηση για να υπολογίσω τον αριθμό των ατόμων που σκαρφαλώνουν στον πρώτο και τον δεύτερο όροφο και μετά τα τακτοποίησα και τα συνόψισα, αλλά αργότερα άλλαξα το εύρος, αλλά το αποτέλεσμα ήταν λάθος.
Δεν ξέρω γιατί,
Αργότερα, όταν κοίταξα τα αποτελέσματα, μου φάνηκαν όλο και πιο οικεία. Δεν είναι αυτή η ακολουθία Fibonacci;
Θα γίνει αργότερα
- int climbStairs(int n) {
- //int n,j;
- int sum=0;
- //scanf("%d",&n);
- int f_1=1;
- int f_2=2;
- int f_n=0;
- //int f_n_1=0;
- if(n==0||n==1||n==2)
- {
- return n;
- }
- for(int i=1;i<=n-2;i++)
- {
- f_n=f_1+f_2;
- //f_n_1=f_n+f_2;
- f_1=f_2;
- f_2=f_n;
- }
- return f_n;
- // return 0;
-
- }
Συνέχισε την καλή δουλειά! ! ! ! ! ! !
Το κεφάλι μου είναι άδειο.
Αν υπάρχει καλύτερη λύση, ενημερώστε με, σας ευχαριστώ!
Το ίδιο με την ακολουθία Fibonacci, δηλαδή χρησιμοποιώντας την αναδρομή για να γράψετε Fibonacci και τελικά την έξοδο
- int *func(int n,int* f_n,int f_1,int f_2)
- {
- --n;
- if(n == -1)
- return n;
- f_n[n] = f_1+f_2;
- f_1 = f_2;
- f_2 = f_n[n];
- func(n,f_n,f_1,f_2);
- return f_n;
- }
-
- int climbStairs(int n) {
-
- int f_n[n];
- func(n,f_n,0,1);
- return f_n[0];
- }
Ελπίζω να είμαι καλύτερα σήμερα από χθες!
Συνέχισε! !