【问题标题】:C#: Cannot reassign variable within For loopC#:无法在 For 循环中重新分配变量
【发布时间】:2017-05-02 17:43:04
【问题描述】:

我正在编写一个程序来计算斐波那契数列中的特定值。递归方法效果很好,但是当我尝试使用 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.
    }
}

有人知道我哪里出错了吗?提前致谢。

【问题讨论】:

  • 有什么不顺利?
  • it doesn't work so well 不是一个好的错误描述。里面没有信息...
  • i>n ?你弄乱了循环条件,所以你的身体永远不会执行。
  • 你的方法不是递归的。 (并不是说你应该递归地实现这个算法,因为你不应该。)

标签: c# for-loop fibonacci


【解决方案1】:

你的循环没有执行

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

变量 i 从 3 开始 - 在您的测试用例中 n = 10。 (10

尝试使用小于来代替

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

【讨论】:

  • 你是对的;我的错误很愚蠢。谢谢!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-10
    • 2015-07-07
    • 1970-01-01
    • 2012-04-26
    • 2022-01-26
    相关资源
    最近更新 更多