C-də döngə və təkrarlanma arasındakı əsas fərq nədir?


cavab 1:

Çox sayda qanunauyğunluq dəfələrlə icra olunarsa, bir döngədədir. Rekursiyalar təkrarən çağırılan bir sıra təlimatlardır. Kompüter baxımından, hər bir təkrarlama ilə eyni funksiya yenidən doğulur.

Döngələr və təkrarlamalar bir çox cəhətdən ekvivalentdir. Həmişə döngələri təkrarlaya və əksinə tərcümə edə bilərsiniz.

Rekursiv funksiyalar daha çox yığma yer alır, çünki hər bir təkrarlama ilə funksiyanın yeni bir nümunəsi yaradılır. Hər təkrarlanan zəngdən sonra problemin daha da asanlaşacağını və prosesi təkrarlamaqla həll edilə biləcəyini düşünsəniz yalnız təkrarlamalardan istifadə etməyiniz məsləhətdir. Məsələn Hanoi qalası problemi.

Dikləri daha səmərəlidir, çünki yığını artırmırlar.


cavab 2:

Əsasən, C-dəki döngə təkrarən yerinə yetirilən və iterasiya adlandırılan bir sıra təlimatlara aiddir.

Məsələn, for loop, loop isə do, while loopdur

recursion sadəcə özünü yaradan (və ya bir şərt yerinə yetirilməyincə özünü çağırmağa davam edən) bir iş üsuludur

Aşağıda iterasiya və təkrarlanma ilə 1-dən 100-ə qədər rəqəmləri çap etmək üçün bir kod.

  1. Rekursiya
# daxil edin ad boşluğu std istifadə; etibarsız printn (int i) {əgər (i! = 1) {printn (i - 1); cout << i << endl; } əks halda cout << i << endl; } int main () {printn (100); // 0 ilə geri dönüş var; }

2. loop istifadə etmək (loop üçün)

# daxil edin ad boşluğu std istifadə; int main () {for (int i = 0; i <= 100; i ++) cout << i << endl; qayıt 0; }

cavab 3:

İSTİFADƏLƏRƏ QARŞI QAZANMA

Təkrarlama təkrarlama

Rekursiya, özünə münasibətdə bir dəsti və ya proseduru təyin etmə mexanizmi üçün istifadə olunan termindir

Təlimat bloku döngələrlə dəfələrlə yerinə yetirilir

Bəzi yerlərdə recursiondan istifadə əlavə xərci yaradır. Buna görə sadə iterasiya həlli varsa atlamaq daha yaxşıdır

Bütün problemlər iterasiya ilə həll edilə bilməz.

Funksiyanın icrasını dayandırmaq üçün funksiyanın əsas hissəsində şərti təlimat tələb olunur

Iterasiya nəzarəti təlimatının özü iterasiyanı dayandırmaq üçün bir təlimat ehtiva edir. Vəziyyət hər dəfə yerinə yetirildikdə yoxlanılır.

Rekursiya sürət və yaddaş baxımından baha başa gəlir

Iterasiya səbəbindən yerüstü bir şey yoxdur. Bütün proqramlaşdırma dilləri iterasiyanı dəstəkləyir

Daha çox yükləmək üçün Android tətbiqetməsi:

C proqramlaşdırma dili - hamısında bir - google play tətbiqetmələri


cavab 4:

N ölçülü bir problem düşünün,

Rekursiyada problemi daha kiçik bir ölçüyə bölün, məsələn B. N / 2 və başqa bir N / 2. N / 2 alt problemlərinin hər biri daha da N / 4 və N / 4-ə bölünür. Daha çox bölünmə mümkün olmayana qədər problemi bölürsən.

Bu, məsələn, N ölçüsü problemini eyni ölçülü 4 alt problemə bölsəniz işləyir

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

İndi bu kiçik problemlərin hər birini həll etmək lazımdır və artıq 4 hissənin birləşməsi əsas problemin (N ölçü probleminin həlli) həllini verdiyini bildiyimiz üçün.

Kiçik bir problemi həll etmək üçün müəyyən bir funksiyanı recursively adlandırırıq.

Döngü iki dəyər üçün bir hesablamanın nə qədər tez-tez təkrarlanacağına qərar vermək üçün istifadə olunur

Şərtlər,

  1. başlanğıc şərt - bir döngə son vəziyyətə necə başlayır - bir döngə burada bitir.

bu iki şərt arasında döngə hesablama məntiqini dəfələrlə yerinə yetirir.

Bir sözlə, döngə üçqaplı olmalı,

{P} C {Q}

P - tələb

C əmri

Q - postcondition

Hoare Triple haqqında məlumat üçün vikiyə baxın - Hoare məntiqi - Vikipediya


cavab 5:

N ölçülü bir problem düşünün,

Rekursiyada problemi daha kiçik bir ölçüyə bölün, məsələn B. N / 2 və başqa bir N / 2. N / 2 alt problemlərinin hər biri daha da N / 4 və N / 4-ə bölünür. Daha çox bölünmə mümkün olmayana qədər problemi bölürsən.

Bu, məsələn, N ölçüsü problemini eyni ölçülü 4 alt problemə bölsəniz işləyir

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

İndi bu kiçik problemlərin hər birini həll etmək lazımdır və artıq 4 hissənin birləşməsi əsas problemin (N ölçü probleminin həlli) həllini verdiyini bildiyimiz üçün.

Kiçik bir problemi həll etmək üçün müəyyən bir funksiyanı recursively adlandırırıq.

Döngü iki dəyər üçün bir hesablamanın nə qədər tez-tez təkrarlanacağına qərar vermək üçün istifadə olunur

Şərtlər,

  1. başlanğıc şərt - bir döngə son vəziyyətə necə başlayır - bir döngə burada bitir.

bu iki şərt arasında döngə hesablama məntiqini dəfələrlə yerinə yetirir.

Bir sözlə, döngə üçqaplı olmalı,

{P} C {Q}

P - tələb

C əmri

Q - postcondition

Hoare Triple haqqında məlumat üçün vikiyə baxın - Hoare məntiqi - Vikipediya


cavab 6:

N ölçülü bir problem düşünün,

Rekursiyada problemi daha kiçik bir ölçüyə bölün, məsələn B. N / 2 və başqa bir N / 2. N / 2 alt problemlərinin hər biri daha da N / 4 və N / 4-ə bölünür. Daha çox bölünmə mümkün olmayana qədər problemi bölürsən.

Bu, məsələn, N ölçüsü problemini eyni ölçülü 4 alt problemə bölsəniz işləyir

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

İndi bu kiçik problemlərin hər birini həll etmək lazımdır və artıq 4 hissənin birləşməsi əsas problemin (N ölçü probleminin həlli) həllini verdiyini bildiyimiz üçün.

Kiçik bir problemi həll etmək üçün müəyyən bir funksiyanı recursively adlandırırıq.

Döngü iki dəyər üçün bir hesablamanın nə qədər tez-tez təkrarlanacağına qərar vermək üçün istifadə olunur

Şərtlər,

  1. başlanğıc şərt - bir döngə son vəziyyətə necə başlayır - bir döngə burada bitir.

bu iki şərt arasında döngə hesablama məntiqini dəfələrlə yerinə yetirir.

Bir sözlə, döngə üçqaplı olmalı,

{P} C {Q}

P - tələb

C əmri

Q - postcondition

Hoare Triple haqqında məlumat üçün vikiyə baxın - Hoare məntiqi - Vikipediya