Skip to content

Commit 771afb9

Browse files
committed
translated until line 512
1 parent d2f20b5 commit 771afb9

File tree

1 file changed

+34
-34
lines changed

1 file changed

+34
-34
lines changed

1-js/06-advanced-functions/01-recursion/article.md

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ Recursivitatea poate oferi un cod mai scurt, ușor de înțeles și de susținut
293293

294294
O altă aplicație excelentă a recursivității este traversarea recursivă.
295295

296-
Imaginați-vă, că avem o companie. Structura personalului poate fi prezentată ca un object:
296+
Imaginați-vă, că avem o companie. Structura personalului poate fi prezentată ca un obiect:
297297

298298
```js
299299
let company = {
@@ -389,48 +389,48 @@ Observați că codul folosește caracteristici inteligente pe care le-am mai aco
389389
- Bucla `for(val of Object.values(obj))` pentru a itera peste valorile obiectului: `Object.values` returnează un array al acestora.
390390

391391

392-
## Recursive structures
392+
## Structuri recursive
393393

394-
A recursive (recursively-defined) data structure is a structure that replicates itself in parts.
394+
O structură de date recursivă (definită în mod recursiv) este o structură care se reproduce pe sine în părți.
395395

396-
We've just seen it in the example of a company structure above.
396+
Tocmai am văzut-o în exemplul structurii unei companii de mai sus.
397397

398-
A company *department* is:
399-
- Either an array of people.
400-
- Or an object with *departments*.
398+
Un *departament* al unei companii este:
399+
- Fie un array de persoane.
400+
- Ori un obiect cu *departamente*.
401401

402-
For web-developers there are much better-known examples: HTML and XML documents.
402+
Pentru dezvoltatorii web există exemple mult mai bine cunoscute: Documentele HTML și XML.
403403

404-
In the HTML document, an *HTML-tag* may contain a list of:
405-
- Text pieces.
406-
- HTML-comments.
407-
- Other *HTML-tags* (that in turn may contain text pieces/comments or other tags etc).
404+
În documentul HTML, un *HTML-tag* poate conține o listă de:
405+
- Bucăți de text.
406+
- Comentarii HTML.
407+
- Alte *tag-uri HTML* (care, la rândul lor, pot conține bucăți de text/comentarii sau alte tag-uri etc).
408408

409-
That's once again a recursive definition.
409+
Aceasta este din nou o definiție recursivă.
410410

411-
For better understanding, we'll cover one more recursive structure named "Linked list" that might be a better alternative for arrays in some cases.
411+
Pentru o mai bună înțelegere, vom acoperi încă o structură recursivă numită "Linked list" care ar putea fi o alternativă mai bună pentru array-uri în anumite cazuri.
412412

413413
### Linked list
414414

415-
Imagine, we want to store an ordered list of objects.
415+
Imaginați-vă, că dorim să stocăm o listă ordonată de obiecte.
416416

417-
The natural choice would be an array:
417+
Alegerea naturală ar fi un array:
418418

419419
```js
420420
let arr = [obj1, obj2, obj3];
421421
```
422422

423-
...But there's a problem with arrays. The "delete element" and "insert element" operations are expensive. For instance, `arr.unshift(obj)` operation has to renumber all elements to make room for a new `obj`, and if the array is big, it takes time. Same with `arr.shift()`.
423+
...Dar există o problemă cu array-urile. Operațiile "delete element" și "insert element" sunt costisitoare. De exemplu, operația `arr.unshift(obj)` trebuie să renumere toate elementele pentru a face loc unui nou `obj`, iar dacă array-ul este mare, durează mult. La fel cu `arr.shift()`.
424424

425-
The only structural modifications that do not require mass-renumbering are those that operate with the end of array: `arr.push/pop`. So an array can be quite slow for big queues, when we have to work with the beginning.
425+
Singurele modificări structurale care nu necesită renumerotare în masă sunt cele care operează la sfârșitul array-ului: `arr.push/pop`. Deci un array poate fi destul de lent pentru cozile mari, atunci când trebuie să lucrăm cu începutul.
426426

427-
Alternatively, if we really need fast insertion/deletion, we can choose another data structure called a [linked list](https://en.wikipedia.org/wiki/Linked_list).
427+
Alternativ, dacă avem cu adevărat nevoie de inserție/ștergere rapidă, putem alege o altă structură de date numită [linked list](https://en.wikipedia.org/wiki/Linked_list).
428428

429-
The *linked list element* is recursively defined as an object with:
429+
*Elementul linked list* este definit recursiv ca un obiect cu:
430430
- `value`.
431-
- `next` property referencing the next *linked list element* or `null` if that's the end.
431+
- proprietatea `next` care face referire la următorul *element din linked list* sau `null` dacă acesta este sfârșitul.
432432

433-
For instance:
433+
De exemplu:
434434

435435
```js
436436
let list = {
@@ -448,11 +448,11 @@ let list = {
448448
};
449449
```
450450

451-
Graphical representation of the list:
451+
Reprezentarea grafică a listei:
452452

453453
![linked list](linked-list.svg)
454454

455-
An alternative code for creation:
455+
Un cod alternativ pentru creare:
456456

457457
```js no-beautify
458458
let list = { value: 1 };
@@ -462,9 +462,9 @@ list.next.next.next = { value: 4 };
462462
list.next.next.next.next = null;
463463
```
464464

465-
Here we can even more clearly see that there are multiple objects, each one has the `value` and `next` pointing to the neighbour. The `list` variable is the first object in the chain, so following `next` pointers from it we can reach any element.
465+
Aici putem vedea și mai clar că există mai multe obiecte, fiecare dintre ele având `value` și `next` care indică vecinul. Variabila `list` este primul obiect din lanț, deci urmărind indicatoarele `next` de la ea putem ajunge la orice element.
466466

467-
The list can be easily split into multiple parts and later joined back:
467+
Lista poate fi ușor împărțită în mai multe părți și ulterior reunită la loc:
468468

469469
```js
470470
let secondList = list.next.next;
@@ -473,15 +473,15 @@ list.next.next = null;
473473

474474
![linked list split](linked-list-split.svg)
475475

476-
To join:
476+
Pentru a se uni:
477477

478478
```js
479479
list.next.next = secondList;
480480
```
481481

482-
And surely we can insert or remove items in any place.
482+
Și cu siguranță putem introduce sau elimina elemente în orice loc.
483483

484-
For instance, to prepend a new value, we need to update the head of the list:
484+
De exemplu, pentru a o prelungi cu o valoare nouă, trebuie să actualizăm capul listei:
485485

486486
```js
487487
let list = { value: 1 };
@@ -490,26 +490,26 @@ list.next.next = { value: 3 };
490490
list.next.next.next = { value: 4 };
491491
492492
*!*
493-
// prepend the new value to the list
493+
// se prelungește noua valoare la listă
494494
list = { value: "new item", next: list };
495495
*/!*
496496
```
497497

498498
![linked list](linked-list-0.svg)
499499

500-
To remove a value from the middle, change `next` of the previous one:
500+
Pentru a elimina o valoare din mijloc, schimbați `next` din cea anterioară:
501501

502502
```js
503503
list.next = list.next.next;
504504
```
505505

506506
![linked list](linked-list-remove-1.svg)
507507

508-
We made `list.next` jump over `1` to value `2`. The value `1` is now excluded from the chain. If it's not stored anywhere else, it will be automatically removed from the memory.
508+
Am făcut ca `list.next` să sară peste `1` la valoarea `2`. Valoarea `1` este acum exclusă din lanț. Dacă nu este stocată în altă parte, ea va fi eliminată automat din memorie.
509509

510-
Unlike arrays, there's no mass-renumbering, we can easily rearrange elements.
510+
Spre deosebire de array-uri, nu există o renumerotare în masă, putem rearanja cu ușurință elementele.
511511

512-
Naturally, lists are not always better than arrays. Otherwise everyone would use only lists.
512+
Firește, listele nu sunt întotdeauna mai bune decât array-urile. Altfel toată lumea ar folosi numai liste.
513513

514514
The main drawback is that we can't easily access an element by its number. In an array that's easy: `arr[n]` is a direct reference. But in the list we need to start from the first item and go `next` `N` times to get the Nth element.
515515

0 commit comments

Comments
 (0)