Различные результаты для факторного расчета в C, Python и JavaScript - PullRequest
0 голосов
/ 28 мая 2019

Я написал несколько простых кодов на Python, JavaScript и C. Я обнаружил, что результаты Python и JavaScript одинаковы, но C дает мне еще один неверный результат, и я не могу понять, в чем заключается ошибка.

C код:

int fact(int n){
    if(n==1){
        return 1;
    }else{
        return (n*fact(n-1));
    }
}

int main(void){
    printf("%i \n",fact(13));
}

JS код:

function fact(n){
    if (n==1){
        return (1);
    }else{
        return (n*fact(n-1));
    }
}

console.log(fact(13));

Код Python:

def fact(n):
    if(n == 0):
        return 1
    else:
        return n * fact(n - 1)

print(fact(13))

Вы можете объяснить?

1 Ответ

1 голос
/ 28 мая 2019

Будучи интерпретированными языками, они (вероятно) автоматически выбирают тип данных для переменных в соответствии с размером данных.

Тем не менее, в C вы указали, что нужно использовать "int" - и он слишком мал для 13!

Если вы переключите "int" на "unsigned long long int" (да, дважды используйте "long"), то ваша программа будет возвращать правильные результаты в течение более длительного времени, до тех пор, пока не произойдет сбой снова - что превышает размер в 64 бита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...