I've been trying to make a program which will calculate the factorial of a certain number, then the number will change (+2) and it will calculate the factorial again. (This is part of the sine function)

This is the current program, but the output is merely 1. (The expected output is 1,6,120,5040…)

Edit: The new method

var icounter, ifactorial, iexponent : int

iexponent:=1

ifactorial:=1

loop

exit when ifactorial>1000000

icounter := 0

ifactorial := 1

loop

icounter := icounter + 1

ifactorial := ifactorial * icounter

exit when icounter = iexponent

end loop

put ifactorial

iexponent:=iexponent +2

end loop

This seems like it would work, but I'm not sure why it doesn't. Does the nested exit condition cause the entire loop to terminate? The new method works. Final result below

var x, xrad, pi, sinx, flag : real

var icounter, ifactorial, iexponent : int

get x

pi := 3.14159265

xrad := x * pi / 180

iexponent := 3

flag := 1

sinx:=xrad

loop

icounter := 0

ifactorial := 1

loop

icounter := icounter + 1

ifactorial := ifactorial * icounter

exit when icounter = iexponent

end loop

if flag = 1 then

sinx := sinx - (xrad ** iexponent) / ifactorial

flag := 0

else

sinx := sinx + (xrad ** iexponent) / ifactorial

flag := 1

end if

iexponent := iexponent + 2

put sinx

end loop