Сравнить версии

Функции

Change Revisions

Ревизия 281653:

Версия 281653 пользователя Knyaz Vladimir, сделанная

Ревизия 281654:

Версия 281654 пользователя Knyaz Vladimir, сделанная

Заголовок:
Функции
Функции
Slug:
Руководство_по_JavaScript_1.5/Функции
Руководство_по_JavaScript_1.5/Функции
Содержимое:

Ревизия 281653
Ревизия 281654
n158    <h3 name="Recursion">n158    <h3 name=".D0.A0.D0.B5.D0.BA.D1.83.D1.80.D1.81.D0.B8.D1.8F">
159      Recursion159      Рекурсия
160    </h3>
161    <p>160    </h3>
162      A function can refer to and call itself. There are three wa161    <p>
>ys for a function to refer to itself: 
162      A function can refer to and call itself. There are three wa
 >ys for a function to refer to itself: Функция может ссылаться и в
 >ызывать сама себя. Существуют три способа функции ссылатся на сам
 >у себя:
n174      For example, consider the following function definition:n174      For example, consider the following function definition: Дл
 >я примера рассмотрим следующее объявление функции:
n178   // statements go heren178   // здесь операторы
n182      Within the function body, the following are all equivalent:n182      Within the function body, the following are all equivalent:
 > В теле функции все три вызова эквиалентны:
n196      A function that calls itself is called a <i>recursive functn196      A function that calls itself is called a <i>recursive funct
>ion</i>. In some ways, recursion is analogous to a loop. Both exe>ion</i>. In some ways, recursion is analogous to a loop. Both exe
>cute the same code multiple times, and both require a condition (>cute the same code multiple times, and both require a condition (
>to avoid an infinite loop, or rather, infinite recursion in this >to avoid an infinite loop, or rather, infinite recursion in this 
>case). For example, the following loop:>case). For example, the following loop: Функция которая вызывает 
 >сама себя называется <i>рекурсивной функцией</i>.В некотором смыс
 >ле рекурсию можно сравнить с циклом. И рекурсия и цикл выполняют 
 >один и тотже код много раз и требуют условие (чтобы избежать беск
 >онечного цикла или рекурсии).Например, следующий цикл&nbsp;:
197    </p>
198    <p>
199      <br>
n200while (x &lt; 10) { // "x &lt; 10" is the loop conditionn203while (x &lt; 10) { // "x &lt; 10" условие цикла
201   // do stuff204   // делаем что-то
n206      can be converted into a recursive function and a call to thn209      can be converted into a recursive function and a call to th
>at function:>at function: может быть преобразован в рекурсивную функцию и вызв
 >ан&nbsp;:
n210   if (x &gt;= 10) // "x &gt;= 10" is the exit condition (equivaln213   if (x &gt;= 10) // "x &gt;= 10" условие выхода(тоже что и "!(x
>ent to "!(x &lt; 10)")> &lt; 10)")
n212   // do stuffn215   // делаем что-то
213   loop(x + 1); // the recursive call216   loop(x + 1); // рекурсивный выход
n218      However, some algorithms cannot be simple iterative loops. n221      However, some algorithms cannot be simple iterative loops. 
>For example, getting all the nodes of a tree structure (e.g. the >For example, getting all the nodes of a tree structure (e.g. the 
><a href="ru/DOM">DOM</a>) is more easily done using recursion:><a href="ru/DOM">DOM</a>) is more easily done using recursion: Од
 >нако в некоторые алгоритмы не могут быть просто повторяющимся цик
 >лом. Например, получить все узлы дерева (например, <a href="ru/DO
 >M">DOM</a>) более легко с помощью рекурсии&nbsp;:
n224   // do something with noden227   // делаем что-то с узлом
n231      Compared to the function <code>loop</code>, each recursive n234      Compared to the function <code>loop</code>, each recursive 
>call itself makes many recursive calls here.>call itself makes many recursive calls here. По сравнению с цикло
 >м вызов рекурсии может происходить несколько раз.
232    </p>
233    <p>235    </p>
234      It is possible to convert any recursive algorithm to a non-
>recursive one, but often the logic is much more complex and doing 
> so requires the use of a stack. In fact, recursion itself uses a 
> stack: the function stack. 
235    </p>236    <p>
237      It is possible to convert any recursive algorithm to a non-
 >recursive one, but often the logic is much more complex and doing
 > so requires the use of a stack. In fact, recursion itself uses a
 > stack: the function stack. Существует возможность конвертировать
 > любой рекурсивный алгоритм в не рекурсивный, но часто логика, го
 >раздо сложнее и для этого необходимо использовать стек. По сути, 
 >рекурсия использует стек&nbsp;: стек функции.
236    <p>238    </p>
237      The stack-like behavior can be seen in the following exampl239    <p>
>e: 
240      <br>
241      The stack-like behavior can be seen in the following exampl
 >e: Поведение стека можно увидеть в следующем примере&nbsp;:
t250      which outputs:t254      Будеть выведено:

Вернуться в Историю