informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Misalkan Anda sedang menaiki tangga. Dibutuhkan n langkah bagi Anda untuk mencapai puncak gedung.
Anda dapat menaiki 1 atau 2 anak tangga sekaligus. Berapa banyak cara berbeda yang dapat Anda lakukan untuk mencapai puncak sebuah gedung?
Saya pertama kali menulis fungsi untuk menghitung jumlah orang yang naik ke lantai satu dan dua, lalu mengatur dan menjumlahkannya, tetapi ternyata di luar jangkauan. Kemudian saya mengubah rentangnya, tetapi hasilnya salah.,,,
Saya tidak tahu kenapa,
Belakangan, ketika saya melihat hasilnya, hasilnya terlihat semakin familiar. Bukankah ini deret Fibonacci?
Itu akan terjadi nanti
- 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;
-
- }
Pertahankan kerja bagus! ! ! ! ! ! !
Kepalaku kosong.
Jika ada solusi yang lebih baik, beri tahu saya, terima kasih!
Sama seperti deret Fibonacci, yaitu menggunakan rekursi untuk menulis Fibonacci, dan terakhir menghasilkan output
- 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];
- }
Saya harap saya lebih baik hari ini daripada kemarin!
Terus berlanjut! !