프로그래밍/Algorithm

n번째 피보나치 수를 돌려주는 재귀 함수를 작성하라

모지사바하 2015. 8. 4. 13:07
/**
* Created by kwo2002 on 2015-08-04.
*/
object Fibonacci {

def fibonacci(n: Int): Int = {
def go(a: Int, b: Int): Int = {
if(b >= n) {
b
}else {
print(b + " ")
go(b, a + b)
}
}

print(0 + " ")
go(0, 1)
}

def main(args: Array[String]) {
println(fibonacci(25))
}

}

회고

1. n번째 피보나치 수를 돌려주는 재귀 함수 자체는 아주 쉬웠으나,

피보나치 수열을 print 해주는건 의외로 약간의 고민이 필요했음.


2. 재귀 호출로 go의 b인자가 결국 피보나치 수열인건데, 첫번째 피보나치 수열 (위에서는 0) 을 어떻게 표현해주는게 좋을지 약간의 고민을 함.

3. 결국 재귀함수 호출하기 직전에 첫번째 피보나치 수열을 print 함.