# Calculate Factorial various languages

### C#

• Classic recursive
``````public static int CalculateFactorialRecursive(int number)
{
return number == 0 ? 1 : number * CalculateFactorialRecursive(number - 1);
}``````
• Iterative
``````public static int CalculateFactorial(int number)
{
return number == 0 ? 1 : Enumerable.Range(1, number).Aggregate(1, (current, i) => current * i);
}``````

### Python

``````def calculate_factorial(input_number: int, recursive: bool = False) -> int | None:
if input_number == 0:
return 1
if recursive:
return input_number * calculate_factorial(input_number - 1, True)

result = input_number
while input_number > 1:
result *= input_number - 1
input_number -= 1
return result``````

Combines the two above to do both options by passing optional field of recursive boolean

### JavaScript

JavaScript will do tail call optimization for this making it more efficient

``````function calculate_factorial(input_number, recursive) {
if (input_number === 0) {
return 1;
}
if (recursive) {
return input_number * calculate_factorial(input_number - 1, true)
}

result = input_number
while (input_number > 1) {
result *= input_number - 1
input_number -= 1
}
return result;
}``````