Use of While loop:
Here is an illustration of calling the function, passing 5000 for the value of the input argument high.
The iterator variable i is initialized to 0, and the running product variable fac that will store the factorial of each and every value of i, is initialized to 1. The first time the while loop is executed, the condition is theoretically true: 1 is less than or equal to 5000. Therefore, the action of the loop is executed, that is to increment i to 1 and fac to 1 (1 * 1). Afterward execution of the action of the loop, the condition is computed again. As it will still be true, the action is executed: i is incremented to 2, and fac get the value 2 (1 * 2). The value 2 is still <= 5000, therefore the action will be executed again: i will be incremented to 3, & fac will get the value 6 (2 * 3). This continues till the first value of fac is found which is bigger than 5000. As soon as fac gets to this value, the condition become false and the while loop will end. At this point the factorial is assigned to the output argument that returns the value. The reason at which i is initialized to 0 instead of 1 is that the first time the loop action is executed, i will be 1 and fac becomes 1 so we have 1 and 1!, that is 1. Note that the output of all the assignment statements is suppressed in the function.