Merge pull request #135 from msaf9/master

PR for Factorial Non-recursive and Non-iterative feature
This commit is contained in:
Vitor Oliveira 2021-04-28 18:33:58 -07:00 committed by GitHub
commit e058c00a91
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 0 deletions

View file

@ -79,6 +79,7 @@
* [Ceil Test](https://github.com/TheAlgorithms/Ruby/blob/master/maths/ceil_test.rb)
* [Decimal To Binary](https://github.com/TheAlgorithms/Ruby/blob/master/maths/decimal_to_binary.rb)
* [Factorial](https://github.com/TheAlgorithms/Ruby/blob/master/maths/factorial.rb)
* [Factorial Non-recursive and Non-iterative](https://github.com/TheAlgorithms/Ruby/blob/master/maths/factorial_non_recursive_non_iterative.rb)
* [Fibonacci](https://github.com/TheAlgorithms/Ruby/blob/master/maths/fibonacci.rb)
* [Find Max](https://github.com/TheAlgorithms/Ruby/blob/master/maths/find_max.rb)
* [Find Min](https://github.com/TheAlgorithms/Ruby/blob/master/maths/find_min.rb)

View file

@ -0,0 +1,43 @@
# A ruby program to find factorial of a given integer
# Factorial of a given integer is defined as the product of all the positive integers less than or equal to the given integer
# Mathematical representation: n! = n * (n - 1) * (n - 2) * ... * 1
#
# Non-recursive and non-iterative approach
#
def factorial(number)
if number < 0
"Please check your input number! The given number is a negative number."
elsif number == 0
"The factorial of #{number} is 1."
else
result = (1..number).inject(:*)
"The factorial of #{number} is #{result}."
end
rescue
"Error: Please provide integer only!"
end
# Valid inputs
puts factorial(0)
# The factorial of 0 is 1.
puts factorial(4)
# The factorial of 4 is 24.
puts factorial(10)
# The factorial of 10 is 3628800.
puts factorial(1)
# The factorial of 1 is 1.
puts factorial(-5)
# Please check your input number! The given number is a negative number.
# Invalid inputs
puts factorial("a")
# Error: Please provide integer only!
puts factorial("2")
# Error: Please provide integer only!