Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Не вычисляет факториал числа (http://www.flasher.ru/forum/showthread.php?t=110721)

muhactive 07.04.2008 21:01

Не вычисляет факториал числа
 
Функция должна вычислять факториал числа но в ответ выдаёт undefined
Код:

Number.prototype.factorial=function () {
if(isNan(this)==false && isInfinity(this)==false && this>=0 && this-Math.round(this)==0) {
  var factor=1;
  for (var i=1; i<=this; i++) {
          factor*=i;
          }
          return factor;
            }
                else {
                        return Nan;
                }
        }
        var a=5;
        trace (Number.prototype.factorial(a)); //Может сдесь ошибка????

Буду благодарен! Заранее спасибо!:rolleyes:

divinus 07.04.2008 21:30

Код:

Number.prototype.factorial = function() {
        if (isNaN(this) == false && this>=0 && this-Math.round(this) == 0) {
                trace("");
                var factor = 1;
                for (var i = 1; i<=this; i++) {
                        factor *= i;
                }
                return factor;
        } else {
                return Nan;
        }
};
var a = 3;
trace(a.factorial());

попробуй так

iNils 07.04.2008 21:30

Код:

function factorial (a:Number):Number {
        if (a >= 0 && a < Number.MAX_VALUE && a != Number.MIN_VALUE && !isNaN (a)) {
                var factor:Number = 1;
                for (var i:Number = 1; i <= Math.round (a); i++) {
                        factor *= i;
                }
                return factor;
        } else {
                return Number.NaN;
        }
}
var a = 5;
trace (factorial (a));
trace (factorial (Number.NaN));
trace (factorial (Number.MIN_VALUE));
trace (factorial (Number.MAX_VALUE));
trace (factorial (Number.NEGATIVE_INFINITY));
trace (factorial (Number.POSITIVE_INFINITY));


muhactive 07.04.2008 21:43

Спасибо оба ваших кода верны!!!
Вот мой ещё!
Код:

Number.prototype.factorial=function () {
if(isNaN(this)==false && isFinite (this)==true && this>=0 && this-Math.round(this)==0) {
  var factor=1;
  for (var i=1; i<=this; i++) {
          factor*=i;
          }
          return factor;
            }
                else {
                        return Nan;
                }
        };
        var a=5;
        trace (a.factorial());


iNils 07.04.2008 21:55

Нет, верный код только мой :D
А ваши Number.prototype.factorial это безобразие. Вам в голову не приходило, почему у Number нет ни одного метода?

Mr. Fixit 07.04.2008 22:10

iNils
через while будет куда быстрее :D
Цитата:

var i : int = 0;
while(++i <= value) {
factor *= i;
}

muhactive 08.04.2008 01:54

Я и не спорю Ваш код куда лучше ;) Я просто не опытен, только недавно начал разбираться с АС2 и думаю что с моим жиланием и Вашим ЗАМЕЧАТЕЛЬНЫМ форумом у меня всё выйдет

etc 08.04.2008 10:47

Цитата:

Сообщение от Mr. Fixit
iNils
через while будет куда быстрее :D

Mr. Fixit, вообще-то тут раздел AS1/AS2, если что.


Часовой пояс GMT +4, время: 13:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.