Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/data/en/math/factorial
diff options
context:
space:
mode:
Diffstat (limited to 'data/en/math/factorial')
-rw-r--r--data/en/math/factorial41
1 files changed, 41 insertions, 0 deletions
diff --git a/data/en/math/factorial b/data/en/math/factorial
new file mode 100644
index 0000000..95d0cd4
--- /dev/null
+++ b/data/en/math/factorial
@@ -0,0 +1,41 @@
+import time
+
+
+def factorial_recursive(number):
+ """ Define a factorial function in recursive flavor """
+ result = 1
+ if number > 0:
+ result = number * factorial_recursive(number - 1)
+ print 'factorizing: ', number, ' result: ', result
+ return result
+
+
+def factorial_iterative(number):
+ """ Define a factorial function in iterative flavor """
+ result = 1
+ for i in range(1, number + 1):
+ result = result * i
+ print 'factorizing: ', i, ' result: ', result
+ return result
+
+
+def calculate(number, type):
+ """ Calculate factorial using recursive and iterative methods """
+ start = time.time()
+ if type == 0:
+ type_s = 'recursive'
+ factorial_recursive(number)
+ else:
+ type_s = 'iterative'
+ factorial_iterative(number)
+ delta = time.time() - start
+ if delta > 0:
+ print 'Type: ', type_s, ' in: ', 1 / delta
+ else:
+ print 'Type: ', type_s
+
+# ask for a number to compute the factorial of
+number = input('Please input a number:')
+print 'Calculating...'
+calculate(number, 0)
+calculate(number, 1)