/**
* 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 함.