피보나치 수열 : 어떤 수열의 항이, 앞의 두 항의 합과 같은 수열

→ 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 …..

만약 5번째의 수열의 값을 구하고 싶다 하면 피보나치를 5번 수행한 값을 구하고 싶다는 것과 같다.

f(5) 이고 n은 점진적으로 5 , 4 , 3 , 2 , 1 이 되어야 피보나치를 5번수행한다.

총 3개의 변수가 필요하다.

20230305_013427.jpg

코틀린으로 구현하면 다음과 같다.

tailrec fun fibonacci(n: Int, a: Int = 0, b: Int = 1): Int {
    return when (n) {
        0 -> a
        1 -> b
        else -> fibonacci(n - 1, b, a + b)
    }

		/**
		n 은 1씩 줄어든다.
		a 는 이전 결과값 b 를 받는다.
		b 는 이전 결과값 (a) + 현재 결과값 (b) 를 한다.
		*/
}