Функция вычисления факториала, неправильно работает с большими числами - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Программа. Описать рекурсивную функцию вычисления n! - факториала числа n, основанную на соотношении n! = n*(n-1)!. Ребят посмотрите что тут не так пожалуйста ... большие числа неправильно считает
#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "conio.h"
#include "locale.h"
 
long fact(int x)
{
    
    if (x == 1)
        return 1;
    if (x == 0)
        return 0;
    else
        return x*fact(x - 1);
}
 
int main()
{
    int n;
    setlocale(LC_ALL, "RUS");
    do
    {
        printf("\nВведите положительное число: ");
        scanf("%d", &n);
        printf("%d! = %ld", n, fact(n));

    } while ( n > 0);
    getch();
    return 0;
}

Решение задачи: «Функция вычисления факториала, неправильно работает с большими числами»

textual
Листинг программы
include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "conio.h"
#include "locale.h"
 
unsigned long long fact(unsigned long long x)
{
    
    if (x == 1)
        return 1;
    if (x == 0)
        return 0;
    else
        return x*fact(x - 1);
}
 
int main()
{
    int n;
    setlocale(LC_ALL, "RUS");
    do
    {
        printf("\nВведите положительное число: ");
        scanf("%d", &n);
        printf("%d! = %llu", n, fact(n));
        
        
    } while ( n > 0);
    getch();
    return 0;
}

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы