Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from operator import mul
- from functools import reduce
- def factorial1(n):
- if n < 0:
- raise Exception("Cannot determine factorial for n < 0")
- if n <= 1:
- return 1
- else:
- return factorial1(n - 1) * n
- def factorial2(n):
- if n < 0:
- raise Exception("Cannot determine factorial for n < 0")
- else:
- result = 1
- for i in range(2, n + 1):
- result *= i
- return result
- def factorial3(n):
- if n < 0:
- raise Exception("Cannot determine factorial for n < 0")
- return reduce(mul, range(1, n + 1), 1)
- def fibonacci1(n):
- if n <= 0:
- return 0
- elif n == 1:
- return 1
- elif n == 2:
- return 1
- else:
- return fibonacci1(n - 1) + fibonacci1(n - 2)
- def fibonacci2(n):
- a = 0
- b = 1
- c = 1
- if n < 0:
- raise Exception("Cannot determine fibonacci for n < 0")
- elif n == 0:
- return a
- elif n == 1:
- return b
- elif n == 2:
- return c
- else:
- for i in range(2, n):
- d = b + c
- b = c
- c = d
- return c
- def fibonacci3(n, x=[0, 1]):
- for i in range(abs(n)-1):
- x = [x[1], sum(x)]
- return x[1]*pow(-1, abs(n) - 1) if n < 0 else x[1] if n else 0
- def return_correct_or_throw(val1, val2, val3):
- if val1 == val2:
- return val1
- if val1 == val3:
- return val3
- if val2 == val3:
- return val2
- raise Exception("Cannot determine correct value!")
- if __name__ == "__main__":
- input = -1
- try:
- res = return_correct_or_throw(factorial1(input), factorial2(input), factorial3(input))
- print("Correct value for factorial({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = 0
- try:
- res = return_correct_or_throw(factorial1(input), factorial2(input), factorial3(input))
- print("Correct value for factorial({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = 1
- try:
- res = return_correct_or_throw(factorial1(input), factorial2(input), factorial3(input))
- print("Correct value for factorial({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = 2.5
- try:
- res = return_correct_or_throw(factorial1(input), factorial2(input), factorial3(input))
- print("Correct value for factorial({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = 10000
- try:
- res = return_correct_or_throw(factorial1(input), factorial2(input), factorial3(input))
- print("Correct value for factorial({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = -1
- try:
- res = return_correct_or_throw(fibonacci1(input), fibonacci2(input), fibonacci3(input))
- print("Correct value for fibonacci({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = 0
- try:
- res = return_correct_or_throw(fibonacci1(input), fibonacci2(input), fibonacci3(input))
- print("Correct value for fibonacci({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = 1
- try:
- res = return_correct_or_throw(fibonacci1(input), fibonacci2(input), fibonacci3(input))
- print("Correct value for fibonacci({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = 2.5
- try:
- res = return_correct_or_throw(fibonacci1(input), fibonacci2(input), fibonacci3(input))
- print("Correct value for fibonacci({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = 5
- try:
- res = return_correct_or_throw(fibonacci1(input), fibonacci2(input), fibonacci3(input))
- print("Correct value for fibonacci({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
- input = 10000
- try:
- res = return_correct_or_throw(fibonacci1(input), fibonacci2(input), fibonacci3(input))
- print("Correct value for fibonacci({}) is {}".format(input, res))
- except Exception as e:
- print(str(e))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement