Функция вычисления факториала, неправильно работает с большими числами - 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;
}