Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Рекурсивная функция (https://javascript.ru/forum/dom-window/39830-rekursivnaya-funkciya.html)

JS&PHP 13.07.2013 21:17

Рекурсивная функция
 
function factorial(x){
  if (x == 1)
    return 1;  
  document.write(x + " Hello<br>");  
  return x * factorial(x-1);// return x - factorial(x-1);
}


Когда стоит умножение или сума все нормально, но когда стоит минус никак не могу понять как выполняется выражение!

Если *:
n * (n-1) * (n-2) * ... * 1

Какая формула при отнимании и делении в таком случая?

danik.js 13.07.2013 21:34

Каком еще делении?

JS&PHP 13.07.2013 21:46

ну пусть будет отнимание, какая формула?

рони 13.07.2013 22:18

JS&PHP,
вариант
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
</head>

<body>
<script>
function factorial(a) {
    var b = 0,
        c = a;
    return function d() {
    if (1 == a || b > a - 2) return c;
        b++;
        c *= a - b;
        document.write(a + " " + (a - b) + " " + c + " Hello<br>");
        return d()
    }()
};
document.write(factorial(9))
</script>
</body>
</html>

melky 14.07.2013 00:37

Цитата:

Сообщение от Дзен-трансгуманист
о рекурсивных примерах с числами фибоначчи я вообще молчу

легче понимать в разы :)

danik.js 14.07.2013 10:33

Цитата:

Сообщение от Дзен-трансгуманист
вот никогда не понимал, почему некоторые люди считают факториалы через хвостовую рекурсию...

Чисто функциональный подход, наиболее полно и понятно выражающий математические функции.


Часовой пояс GMT +3, время: 06:15.