Koks yra pagrindinis skirtumas tarp kilpos ir rekursijos C?


Atsakymas 1:

Sakoma, kad valstybinių narių rinkinys yra kilpoje, jei jie pakartotinai vykdomi. Rekursijos - tai teiginių rinkinys, skambinantis pakartotinai. Kompiuterio perspektyvoje, kiekvieną kartą skambinant rekursyviai, tai tarsi vėl pagimdo tą pačią funkciją.

Kilpos ir pasikartojimai daugeliu atžvilgių yra lygiaverčiai. Visada galite išversti kilpas į rekursijas ir atvirkščiai.

Rekursyvinės funkcijos užima daugiau vietos kamino srityje, nes kiekvieną kartą skambinant rekursiniam skambučiui, sukuriamas naujas funkcijos egzempliorius. Rekursijas patartina naudoti tik tuo atveju, jei jaučiate, kad po kiekvieno pasikartojančio skambučio ranka esanti problema taps paprastesnė ir ją bus galima išspręsti pakartojant procesą. Pavyzdžiui, hanoi problemos bokštas.

Kilpos yra efektyvesnės, nes jos neaugina krūvos.


Atsakymas 2:

Iš esmės C kilpa reiškia pakartotinio vykdymo pareiškimų rinkinį, dar vadinamą iteracija.

Pvz., yra kilpa, o yra kilpa

kadangi rekursija paprasčiausiai yra funkcijos, kuria gimstama (arba vėl ir vėl skambinama, kol įvykdoma kokia nors sąlyga), technika;

Žemiau yra kodas, skirtas atspausdinti skaičius nuo 1 iki 100 su iteracija ir rekursija.

  1. rekursija
# įtraukti 
naudojant vardų sritį;

negalioja spausdinti (int i)
{
jei (i! = 1)
{
printn (i - 1);
cout << i << endl;
}
else cout << i << endl;
 }

int pagrindinis ()
{
spausdinti (100); // tai yra su rekursija
grįžti 0;
}

2. naudojant kilpą (kilpai)

# įtraukti 
naudojant vardų sritį;

int pagrindinis ()
{
už (int i = 0; i <= 100; i ++)
cout << i << endl;

grįžti 0;
}

Atsakymas 3:

PASIKARTOJANČIOS VERSUS ITERACIJOS

Rekursija vs pakartojimas

Rekursija - tai terminas, suteikiamas rinkinio ar procedūros apibrėžimo mechanizmui pačiam

Pareiškimo blokas vykdomas pakartotinai naudojant kilpas

Kai kuriose vietose rekursijos naudojimas sukelia papildomų išlaidų, todėl geriau praleisti, kai yra paprastas iteracijos sprendimas.

Visų problemų negalima išspręsti pakartojant.

Funkcijos vykdymui sustabdyti reikalingas sąlyginis teiginys

Pačioje iteracijos valdymo ataskaitoje yra iteracijos sustabdymo sakinys. Kiekvienos vykdymo metu tikrinamos sąlygos.

Rekursija yra brangi greičio ir atminties atžvilgiu

Iteracija nesukelia pridėtinės vertės. Visa programavimo kalba palaiko iteraciją

Norėdami daugiau atsisiųsti „Android“ programą:

C programavimo kalba - viskas viename - programos „Google Play“


Atsakymas 4:

Pagalvokite apie N dydžio problemą,

Rekursijos metu jūs suskaidote problemą iki mažesnio dydžio, tarkime, N / 2 ir dar N / 2. Kiekviena iš N / 2 antrinių problemų dar yra padalinta į N / 4 ir N / 4. Jūs ir toliau skirstote problemą, kol nebebus galima skirstyti padalijimo.

Tai veikia todėl, kad jei, pavyzdžiui, N dydžio problemą padalintumėte į 4 subproblemas vienodo dydžio, tada

N / 4 + N / 4 + N / 4 + N / 4 = 4N / 4 = N.

Viskas, ko jums reikia, yra išspręsti kiekvieną iš šių mažesnių problemų, ir kadangi mes jau žinome, kad sujungę visas 4 dalis, mes išspręsime pagrindinę problemą (N dydžio problemos sprendimas).

Norėdami išspręsti mažesnę problemą, tam tikrą funkciją vadiname rekursyviai.

Kilpa naudojama nuspręsti, kiek kartų turėtume pakartoti du kartus duotus skaičiavimus

sąlygos,

  1. pradinė sąlyga - štai kaip baigiasi kilpos pradžia - štai kilpa baigiasi.

tarp šių dviejų sąlygų kilpa pakartotinai vykdo skaičiavimo logiką.

Trumpai tariant, kilpa turi atitikti Hoare trigubą,

{P} C {Q}

P - išankstinė sąlyga

C - komanda

Q - Paskyrimas

Apie Hoare'o trigubą galite perskaityti wiki - Hoare logic - Wikipedia


Atsakymas 5:

Pagalvokite apie N dydžio problemą,

Rekursijos metu jūs suskaidote problemą iki mažesnio dydžio, tarkime, N / 2 ir dar N / 2. Kiekviena iš N / 2 antrinių problemų dar yra padalinta į N / 4 ir N / 4. Jūs ir toliau skirstote problemą, kol nebebus galima skirstyti padalijimo.

Tai veikia todėl, kad jei, pavyzdžiui, N dydžio problemą padalintumėte į 4 subproblemas vienodo dydžio, tada

N / 4 + N / 4 + N / 4 + N / 4 = 4N / 4 = N.

Viskas, ko jums reikia, yra išspręsti kiekvieną iš šių mažesnių problemų, ir kadangi mes jau žinome, kad sujungę visas 4 dalis, mes išspręsime pagrindinę problemą (N dydžio problemos sprendimas).

Norėdami išspręsti mažesnę problemą, tam tikrą funkciją vadiname rekursyviai.

Kilpa naudojama nuspręsti, kiek kartų turėtume pakartoti du kartus duotus skaičiavimus

sąlygos,

  1. pradinė sąlyga - štai kaip baigiasi kilpos pradžia - štai kilpa baigiasi.

tarp šių dviejų sąlygų kilpa pakartotinai vykdo skaičiavimo logiką.

Trumpai tariant, kilpa turi atitikti Hoare trigubą,

{P} C {Q}

P - išankstinė sąlyga

C - komanda

Q - Paskyrimas

Apie Hoare'o trigubą galite perskaityti wiki - Hoare logic - Wikipedia


Atsakymas 6:

Pagalvokite apie N dydžio problemą,

Rekursijos metu jūs suskaidote problemą iki mažesnio dydžio, tarkime, N / 2 ir dar N / 2. Kiekviena iš N / 2 antrinių problemų dar yra padalinta į N / 4 ir N / 4. Jūs ir toliau skirstote problemą, kol nebebus galima skirstyti padalijimo.

Tai veikia todėl, kad jei, pavyzdžiui, N dydžio problemą padalintumėte į 4 subproblemas vienodo dydžio, tada

N / 4 + N / 4 + N / 4 + N / 4 = 4N / 4 = N.

Viskas, ko jums reikia, yra išspręsti kiekvieną iš šių mažesnių problemų, ir kadangi mes jau žinome, kad sujungę visas 4 dalis, mes išspręsime pagrindinę problemą (N dydžio problemos sprendimas).

Norėdami išspręsti mažesnę problemą, tam tikrą funkciją vadiname rekursyviai.

Kilpa naudojama nuspręsti, kiek kartų turėtume pakartoti du kartus duotus skaičiavimus

sąlygos,

  1. pradinė sąlyga - štai kaip baigiasi kilpos pradžia - štai kilpa baigiasi.

tarp šių dviejų sąlygų kilpa pakartotinai vykdo skaičiavimo logiką.

Trumpai tariant, kilpa turi atitikti Hoare trigubą,

{P} C {Q}

P - išankstinė sąlyga

C - komanda

Q - Paskyrimas

Apie Hoare'o trigubą galite perskaityti wiki - Hoare logic - Wikipedia