# 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;
}
```