Здравствуйте, Mamut, Вы писали:
M>>>>>Ты лучше на выделенное ответь
PC_>>>>Я на глупые вопросы не отвечаю, путем не сложных арифметических прикидов можно понять, что результат факториала от числа 1048576 не вместит в зазипованном архиве никакой компьютер, ну или может вместит но будет оооооооочень длинным
M>>>Ответь на неглупый. Вернее перепиши его так, чтобы он стал эквивалентен приведенному коду — без дикого жора памяти
L>>Приведенный код ничем не лучше в плане потребления памяти (хвостовой рекурсии-то нету). Пожалуй даже хуже, т.к. стек по размеру мягко говоря обычно меньше размера доступной оперативки.
M>Да, что-то я промахнулся
M>Правда, если туда добавить хвостовую рекурсию...
M>M>factorial( N ) ->
M> factorial( N, 1 ).
M>% tail-recursive:
M>factorial( 0, Product ) ->
M> Product;
M>factorial( N, Product ) ->
M> factorial( N - 1, N * Product ).
M>
M>Память будет тратиться только на собственно результат
Миллион я не высичлял, но 100 000 вполне спокойно обрабатывает.
M>Думаю, на PC_2 фиг сделаешь.
Чо-чо, на РС не сделаешь ?
А так
Sum:=1
Sum*=(I<1048576?I)
?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН