2016-12-16 157 views
0

我正在编写一个程序来计算Fibonacci序列中的特定值。递归方法完美的作品,但是当我尝试使用for循环,它不工作这么好:C#:无法在For循环内重新分配变量

class Program 
{ 

    static int loopF(int n) 
    { 
     int result=0; 
     if (n == 1) 
     { 
      result = n; 
     } 
     else if (n == 2) 
     { 
      result = n; 
     } 
     else if (n>2) 
     { 
      int S1 = 1; int S2 = 2; 
      for (int i = 3; i>n; i++) { 
       result = S1 + S2; 
       S1 = S2; 
       S2 = result; 
             } 
     } 
     else{ 
      Console.WriteLine("Input Error"); 
     } 
     return (result); 
    } 

    static void Main() 
    { 
     Console.WriteLine(loopF(10)); //it gives me 0; wrong 
     Console.WriteLine(loopF(1)); //it gives me 1; correct. 
    } 
} 

有谁知道我走到哪里错了?提前致谢。

+0

什么并不那么好走? –

+1

“它不能很好地工作”不是一个很好的错误说明。没有信息... –

+4

'i> n'?你弄糟了循环条件,所以你的身体永远不会执行。 –

回答

0

循环不执行

for (int i = 3; i>n; i++) 

变量i开始于3 - 在测试情况下,n = 10。 (10 < 3)= false,这样的循环将不会执行。

尝试使用小于代替

for (int i = 3; i < n; i++) 
+0

你是对的;我的错误非常愚蠢。谢谢! – chl111

0

您的循环退出条件错误。它应该是

for (int i = 3; i < n ; i++) { ...