вы не подумайте, что я сегодня крышей тронулась.
это произошло уже давно.
сидим мы сейчас с ещё одним таким же придурком, как и я, и думаем, чем бы вычислить факториал миллиона.
программа на питоне:
def factorial(n):
if n <= 1:
return 1;
return n*factorial(n-1);
print factorial(1000000);
Результат:
RuntimeError: maximum recursion depth exceeded
и такой результат при попытке высчитать факториал тысячи и более. 999 считает мгновенно.
попробовали различные калькуляторы - результат ещё хуже. считают по сотне-другой. самый лучший считает 1754!
виндовый штатный скрипнул, сказал, что считать будет долго, но взялся. и через каждые две минуты прерывает расчёты на ворчание о том, что задачу ему дали непосильную. А поскольку хотели измерить скорость вычисления, то такая работа не катит.
Вот простейшая программка на С:
#include <stdio.h>
int factorial(int n){
if(n <= 1)
return 1;
return n*factorial(n-1);
}
int main(){
printf("%d",factorial(1000000));
}
она готова считать факториал 15000, но миллион - нет, segmentation fault.
Так чем же можно его вычислить?