Jaký je základní rozdíl mezi smyčkou a rekurzí v C?
Odpověď 1:
Řada statememů se říká, že jsou ve smyčce, pokud jsou opakovaně prováděny. Rekurze jsou sadou výroků, které se opakovaně nazývají. V perspektivě počítače je pokaždé, když je provedeno rekurzivní volání, to jako znovu porodit stejné funkci.
Smyčky a rekurze jsou v mnoha ohledech rovnocenné. Smyčky můžete vždy převádět na rekurze a naopak.
Rekurzivní funkce zabírají více zásobníku, protože při každém rekurzivním volání se vytvoří nová instance funkce. Doporučujeme používat rekurze pouze v případě, že máte pocit, že po každém opakovaném volání bude problém jednodušší a lze jej vyřešit opakováním procesu. Například, věž Hanoj problém.
Smyčky jsou efektivnější, protože nevyvíjejí zásobník.
Odpověď 2:
V zásadě smyčka v C označuje množinu příkazů prováděných opakovaně, také nazývaných iterace.
eg- for je smyčka, zatímco je smyčka do-while je smyčka
vzhledem k tomu, že rekurze je jednoduše technikou funkce, která se rodí sama sobě (nebo se nazývá znovu a znovu, dokud nejsou splněny některé podmínky)
Níže je kód pro tisk čísel od 1 do 100 s iterací a rekurzí.
- rekurze
#includepomocí oboru názvů std; void printn (int i) { pokud (i! = 1) { printn (i - 1); cout << i << endl; } else cout << i << endl; } int main () { printn (100); // to je s rekurzí návrat 0; }
2. pomocí smyčky (pro smyčku)
#includepomocí oboru názvů std; int main () { pro (int i = 0; i <= 100; i ++) cout << i << endl; návrat 0; }
Odpověď 3:
ITERACE RECERZE VERSUS
Rekurze vs. Iterace
Rekurze je termín daný mechanismu definování souboru nebo postupu z hlediska jeho samotného
Blok příkazu se provádí opakovaně pomocí smyček
Na některých místech použití rekurze generuje extra režii, proto je lepší přeskočit, když je k dispozici snadné řešení pro iteraci.
Všechny problémy nelze vyřešit iterací.
Pro zastavení provádění funkce je v těle funkce vyžadován podmíněný příkaz
Samotný příkaz pro iteraci obsahuje příkaz pro zastavení iterace. Při každém provedení je podmínka zkontrolována.
Rekurze je drahá z hlediska rychlosti a paměti
Iterace nevytváří žádnou režii. Všechny programovací jazyky podporují iteraci
Další aplikaci pro Android ke stažení:
Programovací jazyk C - Vše v jednom - Aplikace na Google Play
Odpověď 4:
Přemýšlejte o problému velikosti N,
Při rekurzi rozbijete problém na menší velikost, řekněme N / 2 a další N / 2. Každý z dílčích problémů N / 2 je dále rozdělen na N / 4 a N / 4. Stále rozdělujete problém, dokud už není možné další dělení.
To funguje, protože pokud například rozdělíte problém velikosti N na 4 dílčí problém ve stejné velikosti, pak
N / 4 + N / 4 + N / 4 + N / 4 = 4N / 4 = N.
Nyní vše, co potřebujete, je vyřešit každý z těchto menších problémů a protože již víme, že kombinace všech 4 částí nám poskytne řešení hlavního problému (řešení problému velikosti N).
Pro vyřešení menšího problému voláme rekurzivně určitou funkci.
Smyčka se používá k rozhodnutí, kolikrát bychom měli opakovat výpočet při dvou
podmínky,
- počáteční podmínka - takto končí podmínka ukončení počáteční smyčky - zde končí smyčka.
mezi těmito dvěma podmínkami provádí smyčka opakovaně výpočetní logiku.
Stručně řečeno, smyčka musí uspokojit trojici Hoare,
{P} C {Q}
P - Předpoklad
C - příkaz
Q - Postcondition
O trojici Hoare si můžete přečíst na wiki - logika Hoare - Wikipedia
Odpověď 5:
Přemýšlejte o problému velikosti N,
Při rekurzi rozbijete problém na menší velikost, řekněme N / 2 a další N / 2. Každý z dílčích problémů N / 2 je dále rozdělen na N / 4 a N / 4. Stále rozdělujete problém, dokud už není možné další dělení.
To funguje, protože pokud například rozdělíte problém velikosti N na 4 dílčí problém ve stejné velikosti, pak
N / 4 + N / 4 + N / 4 + N / 4 = 4N / 4 = N.
Nyní vše, co potřebujete, je vyřešit každý z těchto menších problémů a protože již víme, že kombinace všech 4 částí nám poskytne řešení hlavního problému (řešení problému velikosti N).
Pro vyřešení menšího problému voláme rekurzivně určitou funkci.
Smyčka se používá k rozhodnutí, kolikrát bychom měli opakovat výpočet při dvou
podmínky,
- počáteční podmínka - takto končí podmínka ukončení počáteční smyčky - zde končí smyčka.
mezi těmito dvěma podmínkami provádí smyčka opakovaně výpočetní logiku.
Stručně řečeno, smyčka musí uspokojit trojici Hoare,
{P} C {Q}
P - Předpoklad
C - příkaz
Q - Postcondition
O trojici Hoare si můžete přečíst na wiki - logika Hoare - Wikipedia
Odpověď 6:
Přemýšlejte o problému velikosti N,
Při rekurzi rozbijete problém na menší velikost, řekněme N / 2 a další N / 2. Každý z dílčích problémů N / 2 je dále rozdělen na N / 4 a N / 4. Stále rozdělujete problém, dokud už není možné další dělení.
To funguje, protože pokud například rozdělíte problém velikosti N na 4 dílčí problém ve stejné velikosti, pak
N / 4 + N / 4 + N / 4 + N / 4 = 4N / 4 = N.
Nyní vše, co potřebujete, je vyřešit každý z těchto menších problémů a protože již víme, že kombinace všech 4 částí nám poskytne řešení hlavního problému (řešení problému velikosti N).
Pro vyřešení menšího problému voláme rekurzivně určitou funkci.
Smyčka se používá k rozhodnutí, kolikrát bychom měli opakovat výpočet při dvou
podmínky,
- počáteční podmínka - takto končí podmínka ukončení počáteční smyčky - zde končí smyčka.
mezi těmito dvěma podmínkami provádí smyčka opakovaně výpočetní logiku.
Stručně řečeno, smyčka musí uspokojit trojici Hoare,
{P} C {Q}
P - Předpoklad
C - příkaz
Q - Postcondition
O trojici Hoare si můžete přečíst na wiki - logika Hoare - Wikipedia