Помогите с принципом программного вычисления факториала.
Я понимаю по какому принципу он убывает до нуля, и там принимает значение 1.Объясните принцип обратного возрастания до конечного значения факториала, по проще если можно.
Я понимаю по какому принципу он убывает до нуля, и там принимает значение 1.Объясните принцип обратного возрастания до конечного значения факториала, по проще если можно.
Откуда такой смешной АЛГОРИТМ вы нарисовали.
Факториал вычисляют по другому.
VAR FACTOR,I,N:INTEGER;
BEGIN
FACTOR:=1;
I:=1
READLN(N) - ПАРАМЕТР ФАКТОРИАЛА
REPEAT
FACTOR:=FACTOR*I;
I:=I+1
UNTIL I>N
WRITELN(FACTOR);
END.
напишу тебе на почту если поставишь лучший ответ
В данном случае реализуется рекурсивный метод вычисления. Останавливается потому, что в рекурсивных методах обязана быть и всегда есть проверка условия остановки, которая на этом рисунке не показана.
На Паскале функция будет выглядеть так:
function fact(x:integer):integer; begin if x>0 then x:=x*fact(x-1) else x:=1 end;
На С это будет, естественно, выглядеть компактнее:
long fact(int x){return x?x*fact(x-1):1;}
Блок-схемы обычно только мешают пониманию.
А факториал, кстати, можно вычислять и еше проще без рекурсии обычным циклом.