.
.
, , , .
, , , . . , , .
. . .
pow(x, n), x n. , x n .
pow(2, 2) = 4
pow(2, 3) = 8
pow(2, 4) = 16
.
-
:
for:function pow(x, n) { let result = 1; // result x n for (let i = 0; i < n; i++) { result *= x; } return result; } alert( pow(2, 3) ); // 8 -
: :
function pow(x, n) { if (n == 1) { return x; } else { return x * pow(x, n - 1); } } alert( pow(2, 3) ); // 8
, .
pow(x, n) , :
if n==1 = x
/
pow(x, n) =
\
else = x * pow(x, n - 1)
-
n == 1, . , :pow(x, 1)x. -
pow(x, n):x * pow(x, n - 1). :xn = x * xn-1. : (x) (pown). ,n1.
, pow n == 1.
, pow(2, 4) :
pow(2, 4) = 2 * pow(2, 3)pow(2, 3) = 2 * pow(2, 2)pow(2, 2) = 2 * pow(2, 1)pow(2, 1) = 2
, , , , .
, .
? if, pow(x, n), , :
function pow(x, n) {
return (n == 1) ? x : (x * pow(x, n - 1));
}
( ) . n.
JavaScript. 10000 , , 100000 . , ( ), .
, : , .
,
, . .
(execution context).
, .
, :
- .
- , , .
- , .
- , , .
pow(2, 3).
pow(2, 3)
pow(2, 3) : x = 2, n = 3, .
:
- : { x: 2, n: 3, 1 } pow(2, 3)
. n == 1 , if:
function pow(x, n) {
if (n == 1) {
return x;
} else {
return x * pow(x, n - 1);
}
}
alert( pow(2, 3) );
, , :
- : { x: 2, n: 3, 5 } pow(2, 3)
x * pow(x, n - 1), pow pow(2, 2).
pow(2, 2)
JavaScript .
pow, . :
- .
- .
- , .
pow(2, 2):
- : { x: 2, n: 2, 1 } pow(2, 2)
- : { x: 2, n: 3, 5 } pow(2, 3)
( ), .
, , , , . , .
pow(2, 1)
: 5, x=2, n=1.
, :
- : { x: 2, n: 1, 1 } pow(2, 1)
- : { x: 2, n: 2, 5 } pow(2, 2)
- : { x: 2, n: 3, 5 } pow(2, 3)
pow(2, 1).
pow(2, 1), , n == 1 , if:
function pow(x, n) {
if (n == 1) {
return x;
} else {
return x * pow(x, n - 1);
}
}
, , 2.
, , , :
- : { x: 2, n: 2, 5 } pow(2, 2)
- : { x: 2, n: 3, 5 } pow(2, 3)
pow(2, 2). pow(2, 1), x * pow(x, n - 1), 4.
:
- : { x: 2, n: 3, 5 } pow(2, 3)
, : pow(2, 3) = 8.
3.
, , .
. , , n n .
:
function pow(x, n) {
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
pow , i result. , n.
. , .
, , , . .
, . , , , .
.
, . :
let company = {
sales: [{
name: 'John',
salary: 1000
}, {
name: 'Alice',
salary: 600
}],
development: {
sites: [{
name: 'Peter',
salary: 2000
}, {
name: 'Alex',
salary: 1800
}],
internals: [{
name: 'Jack',
salary: 1300
}]
}
};
, .
-
. ,
sales2 : . -
, ,
development:sitesinternals. . -
, ( ).
,
sitessiteAsiteB. . , .
, , . ?
, . , for company 1- . , sites 3- , ? 3-4 , .
.
, , :
- .
-
NN, , .
(1), , , .
(2), , . . , , , , (1).
:
let company = { // ,
sales: [{name: 'John', salary: 1000}, {name: 'Alice', salary: 600 }],
development: {
sites: [{name: 'Peter', salary: 2000}, {name: 'Alex', salary: 1800 }],
internals: [{name: 'Jack', salary: 1300}]
}
};
//
function sumSalaries(department) {
if (Array.isArray(department)) { // (1)
return department.reduce((prev, current) => prev + current.salary, 0); //
} else { // (2)
let sum = 0;
for (let subdep of Object.values(department)) {
sum += sumSalaries(subdep); // ,
}
return sum;
}
}
alert(sumSalaries(company)); // 6700
(?). . .
:
: {...} , [...] , .
, , :
( ) , .
.
:
- .
- .
- : HTML- XML-.
HTML- HTML- :
- .
- HTML-.
- HTML- (, , / ..).
.
, .
, .
:
let arr = [obj1, obj2, obj3];
. . , arr.unshift(obj) , obj, , , . arr.shift().
, , : arr.push/pop. , , .
:
value,next,null, .
:
let list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: null
}
}
}
};
:
:
let list = { value: 1 };
list.next = { value: 2 };
list.next.next = { value: 3 };
list.next.next.next = { value: 4 };
list.next.next.next.next = null;
, , value next, . list , , next , .
:
let secondList = list.next.next;
list.next.next = null;
:
list.next.next = secondList;
, , .
, :
let list = { value: 1 };
list.next = { value: 2 };
list.next.next = { value: 3 };
list.next.next.next = { value: 4 };
list.next.next.next.next = null;
//
list = { value: "new item", next: list };
, next :
list.next = list.next.next;
list.next 1 2. 1 . - , .
, , .
, . .
, . : arr[n] . next N , N- .
:
-
prevnext, . -
tail, ( / ). - : , .
:
. . .
<code>, —<pre>, 10 — (plnkr, JSBin, codepen)