2012-12-16 3 views
4

피보나치 시퀀스를 C#에서 매우 간단한 방법으로 계산하려고합니다.하지만 더 높은 숫자의 경우 버그가 나오고 잘못된 답을내어 작업을 중단합니다.피보나치 계산 C#

ulong num = 1; 
ulong lnum = 0; 
uint x = 1; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    listBox1.Items.Add("(0) " + 1); 
} 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    if (x <= 1000) 
    { 
     ulong newnum = lnum + num; 
     listBox1.Items.Add("(" + x + ") " + newnum); 
     listBox1.SetSelected((int)x, true); 
     lnum = num; 
     num = newnum; 
     x++; 
    } 
} 

나는 그것을 한 번에 하나씩 목록 상자에 추가하여 숫자를 더할 수있는 방식으로 만듭니다.

답변

11

ulong이 피코 나치에 비해 너무 작습니다. 더 큰 것을 사용해야합니다. .NET 4에는 BigInteger이 추가되어 임의의 숫자를 허용해야합니다.

낮은 .NET 버전의 경우 similliar 타사 구현

을 찾아야합니다.