ABUHAKMEH님은 커뮤니티의 힘을 믿습니다. 본인의 코드에서 다양한 피보나치 수열을 얻는 커뮤니티 코드를 제시합니다.
1개의 좋아요
피보나치의 자릿수는 결정되면 변하지 않으므로 위의 풀이는 저는 마음에 들지 않습니다.
저의 풀이입니다.
var series = Fibonacci.AsSequences().Take(10);
Console.WriteLine(string.Join(",", series));
series = Fibonacci.AsSequences().Take(10);
Console.WriteLine(string.Join(",", series));
static class Fibonacci
{
private static readonly IList<int> _fibonacciSequences = new List<int> { 0, 1 };
public static int Get(int index)
{
// 캐시되어 있으면 바로 값을 반환
if (index < _fibonacciSequences.Count)
return _fibonacciSequences[index];
var result = Get(index - 2) + Get(index - 1);
// 캐시함
_fibonacciSequences.Add(result);
return result;
}
public static IEnumerable<int> AsSequences()
{
var i = 0;
while (true)
{
yield return Get(i);
i++;
}
}
}
2개의 좋아요