Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- kotlin
- 개발노트
- Java
- 루비
- Godot
- jetbrains
- Python
- CPP
- rubymine
- IntelliJ
- C
- gnuplot
- RaspberryPi
- boj
- ruby2d
- OTLanguage
- react
- GitHub
- plugin
- error
- gradle
- ruby
- maven
- Android
- Shell
- Vane
- Spring
- Baekjoon
- OAuth
- JS
Archives
- Today
- Total
PersesTitan(페르) 기술블로그
[Ruby] 루비 팩토리얼 함수 만들기 본문
ruby는 팩토리얼 함수가 존재하지 않기 때문에 간단하게 팩토리얼 함수를 만들어 보는 법을 알아 보겠습니다.
팩토리얼
팩토리얼은 1부터 n까지의 값까지 값을 모두 곱한 값을 의미합니다.
5! (5팩토리얼) 일때 1 * 2 * 3 * 4 * 5의 값이 5!의 값이 되는 원리를 이용하여 팩토리얼 함수를 구현하는 방법이죠
inject
ruby에는 inject라는 배열의 계산을 편하게 해주는 함수가 존재합니다.
해당 함수를 이용하여 팩토리얼을 구하는 함수를 간단하게 구할 수 있게 됩니다.
다음은 기본적인 inject를 사용하여 구현한 factorial함수 입니다.
sum현재까지의 계산한 값이고, v는 현재 리스트 값 아이템 값 입니다.
def factorial(n)
1.upto(n).inject { |sum, v| sum * v }
end
puts factorial(3)
puts factorial(4)
puts factorial(5)
결과
6
24
120
간결화
위 코드는 다음과 같이 간결화가 가능해집니다.
def factorial(n)
1.upto(n).inject(:*)
end
그리고 함수를 람다식으로 만들면 더욱 간결화가 가능해집니다.
factorial = ->(n) { 1.upto(n).inject(:*) }
puts factorial.call(3)
puts factorial.call(4)
puts factorial.call(5)
upto를 이용하는 방법도 있지만 다음과 같은 방법도 가능합니다.
factorial = ->(n) { (1..n).inject(:*) }
위 방법 중 원하는 방법으로 팩토리얼 값 구하면 좋을 것 같습니다.
'Language > Ruby' 카테고리의 다른 글
[Ruby] 특정 문자열 변경하기 (sub, gsub) (0) | 2024.04.24 |
---|---|
[Ruby] 루비 Gem 배포하는 법 (0) | 2023.12.09 |
[Ruby] 루비로 tan 그래프 구현하기 (0) | 2023.04.12 |
[Ruby] 루비로 cos 그래프 구현하기 (0) | 2023.04.12 |
[Ruby] 루비로 sin 그래프 구현하기 (0) | 2023.04.12 |