


Menggunakan ruang tambahan untuk fungsi rekursif dalam program C?
Di sini kita akan melihat bagaimana panggilan fungsi rekursif memerlukan ruang tambahan. Bagaimanakah ia berbeza daripada panggilan fungsi biasa?
Andaikan kita mempunyai fungsi seperti yang ditunjukkan di bawah -
long fact(int n){ if(n == 0 || n == 1) return 1; return n * fact(n-1); }
Fungsi ini adalah fungsi rekursif. Apabila kita memanggilnya seperti fakta(5), ia akan menyimpan alamat di dalam tindanan seperti yang ditunjukkan di bawah -
fact(5) ---> fact(4) ---> fact(3) ---> fact(2) ---> fact(1)
Apabila fungsi rekursif memanggil dirinya berulang kali, alamat itu ditambahkan pada tindanan. Oleh itu, jika fungsi dipanggil secara rekursif n kali, ia akan menduduki ruang tambahan O(n). Tetapi ini tidak bermakna jika fungsi normal dipanggil n kali, kerumitan ruang akan menjadi O(n). Untuk fungsi biasa, alamat ditolak ke tindanan apabila dipanggil. Setelah selesai, alamat akan muncul dari timbunan dan dimasukkan ke dalam fungsi pemanggil. Kemudian telefon semula. Jadi kerumitannya ialah O(1).
Atas ialah kandungan terperinci Menggunakan ruang tambahan untuk fungsi rekursif dalam program C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Diberikan di bawah adalah algoritma bahasa C untuk menukar angka Rom kepada nombor perpuluhan: Algoritma Langkah 1 - Mulakan Langkah 2 - Baca angka Rom pada masa jalan Langkah 3 - Panjang: = strlen(roman) Langkah 4 - Untuk i=0 kepada Length-1 Langkah 4.1-suis(roman[i]) Langkah 4.1.1-case'm': &nbs

Untuk mengoptimumkan prestasi fungsi rekursif, anda boleh menggunakan teknik berikut: Gunakan rekursif ekor: Buat panggilan rekursif pada penghujung fungsi untuk mengelakkan overhed rekursif. Memoisasi: Simpan hasil pengiraan untuk mengelakkan pengiraan berulang. Kaedah bahagi dan takluk: menguraikan masalah dan menyelesaikan sub-masalah secara rekursif untuk meningkatkan kecekapan.

Fungsi hiperbola ditakrifkan menggunakan hiperbola dan bukannya bulatan dan bersamaan dengan fungsi trigonometri biasa. Ia mengembalikan parameter nisbah dalam fungsi sinus hiperbolik dari sudut yang dibekalkan dalam radian. Tetapi lakukan sebaliknya, atau dengan kata lain. Jika kita ingin mengira sudut daripada sinus hiperbolik, kita memerlukan operasi trigonometri hiperbolik songsang seperti operasi sinus songsang hiperbolik. Kursus ini akan menunjukkan cara menggunakan fungsi sinus songsang hiperbolik (asinh) dalam C++ untuk mengira sudut menggunakan nilai sinus hiperbolik dalam radian. Operasi arcsine hiperbolik mengikut formula berikut -$$\mathrm{sinh^{-1}x\:=\:In(x\:+\:\sqrt{x^2\:+\:1})}, Di mana\:In\:is\:logaritma asli\:(log_e\:k)

Senarai terpaut menggunakan peruntukan memori dinamik, iaitu ia berkembang dan mengecut dengan sewajarnya. Ia ditakrifkan sebagai koleksi nod. Di sini, nod mempunyai dua bahagian, data dan pautan. Data, pautan dan senarai terpaut diwakili seperti berikut - Jenis senarai terpaut Terdapat empat jenis senarai terpaut, seperti berikut: - Senarai pautan tunggal / Senarai pautan tunggal Senarai berganda / Berganda Pekeliling Senarai pautan tunggal Pekeliling Senarai pautan berganda Kami menggunakan kaedah rekursif untuk mencari panjang senarai terpaut Logiknya ialah -intlength(nod *temp){ if(temp==NULL) returnl{&n

Peta ialah sejenis bekas khas dalam C++ di mana setiap elemen adalah sepasang dua nilai, iaitu nilai kunci dan nilai dipetakan. Nilai kunci digunakan untuk mengindeks setiap item, dan nilai yang dipetakan ialah nilai yang dikaitkan dengan kunci. Tidak kira sama ada nilai yang dipetakan adalah unik, kuncinya sentiasa unik. Untuk mencetak elemen peta dalam C++ kita perlu menggunakan iterator. Elemen dalam set item ditunjukkan oleh objek iterator. Iterator digunakan terutamanya dengan tatasusunan dan jenis bekas lain (seperti vektor), dan mereka mempunyai set operasi khusus yang boleh digunakan untuk mengenal pasti elemen tertentu dalam julat tertentu. Iterator boleh dinaikkan atau dikurangkan untuk merujuk elemen berbeza yang terdapat dalam julat atau bekas. Peulang menunjuk ke lokasi memori elemen tertentu dalam julat. Mencetak peta dalam C++ menggunakan iterator Mula-mula, mari lihat cara untuk mentakrifkan

Fungsi rekursif digunakan dalam algoritma carian untuk meneroka struktur data seperti pokok. Carian pertama mendalam menggunakan timbunan untuk meneroka nod, manakala carian pertama keluasan menggunakan baris gilir untuk melintasi lapisan demi lapisan. Dalam aplikasi praktikal, seperti mencari fail, fungsi rekursif boleh digunakan untuk mencari fail tertentu dalam direktori tertentu.

Fungsi nama semula menukar fail atau direktori daripada nama lamanya kepada nama baharunya. Operasi ini serupa dengan operasi bergerak. Jadi kita juga boleh menggunakan fungsi nama semula ini untuk memindahkan fail. Fungsi ini wujud dalam fail pengepala perpustakaan stdio.h. Sintaks fungsi nama semula adalah seperti berikut: intrename(constchar*oldname,constchar*newname); Fungsi rename() fungsi menerima dua parameter. Satu nama lama dan satu lagi nama baru. Kedua-dua parameter adalah penunjuk kepada aksara malar yang mentakrifkan nama lama dan baharu fail. Mengembalikan sifar jika fail berjaya dinamakan semula, jika tidak, mengembalikan integer bukan sifar. Semasa operasi menamakan semula

Sains moden sangat bergantung pada konsep nombor jamak, yang pertama kali ditubuhkan pada awal abad ke-17 oleh Girolamo Cardano, yang memperkenalkannya pada abad ke-16. Formula untuk nombor kompleks ialah a+ib, dengan a memegang kod html dan b ialah nombor nyata. Nombor kompleks dikatakan mempunyai dua bahagian: bahagian nyata <a> dan bahagian khayalan (<ib>). Nilai i atau iota ialah √-1. Kelas jamak dalam C++ ialah kelas yang digunakan untuk mewakili nombor kompleks. Kelas kompleks dalam C++ boleh mewakili dan mengawal beberapa operasi nombor kompleks. Mari kita lihat bagaimana untuk mewakili dan mengawal paparan nombor majmuk. imag() fungsi ahli Seperti yang dinyatakan di atas, nombor kompleks terdiri daripada bahagian nyata dan bahagian khayalan. Untuk memaparkan bahagian sebenar kami menggunakan real()
