Saya setuju dengan pgaur dan rickerbh, kompleksitas Recursive-fibonacci adalah O (2 ^ n).
Saya sampai pada kesimpulan yang sama dengan alasan yang agak sederhana tapi saya percaya masih valid.
Pertama, ini semua tentang mencari tahu berapa kali fungsi fibonacci recursive (F () dari sekarang) dipanggil ketika menghitung nomor Nth fibonacci. Jika dipanggil sekali per angka dalam urutan 0 hingga n, maka kita memiliki O (n), jika dipanggil n kali untuk setiap angka, maka kita mendapatkan O (n * n), atau O (n ^ 2), dan seterusnya.
Jadi, ketika F () dipanggil untuk bilangan n, jumlah kali F () dipanggil untuk bilangan tertentu antara 0 dan n-1 bertambah ketika kita mendekati 0.
Sebagai kesan pertama, menurut saya jika kita meletakkannya secara visual, menggambar unit per waktu F () disebut dengan angka tertentu, basah mendapatkan semacam bentuk piramida (yaitu, jika kita memusatkan unit secara horizontal ). Sesuatu seperti ini:
n *
n-1 **
n-2 ****
...
2 ***********
1 ******************
0 ***************************
Sekarang, pertanyaannya adalah, seberapa cepat dasar piramida ini membesar saat n tumbuh?
Mari kita ambil contoh nyata, misalnya F (6)
F(6) * <-- only once
F(5) * <-- only once too
F(4) **
F(3) ****
F(2) ********
F(1) **************** <-- 16
F(0) ******************************** <-- 32
Kita melihat F (0) dipanggil 32 kali, yaitu 2 ^ 5, yang untuk kasus sampel ini adalah 2 ^ (n-1).
Sekarang, kita ingin tahu berapa kali F (x) dipanggil sama sekali, dan kita dapat melihat berapa kali F (0) dipanggil hanya sebagian saja.
Jika kita secara mental memindahkan semua baris * dari F (6) ke F (2) menjadi garis F (1), kita melihat bahwa garis F (1) dan F (0) sekarang memiliki panjang yang sama. Yang berarti, total kali F () dipanggil ketika n = 6 adalah 2x32 = 64 = 2 ^ 6.
Sekarang, dalam hal kompleksitas:
O( F(6) ) = O(2^6)
O( F(n) ) = O(2^n)