如何通过加法将数字迭代到极限

How to iterate numbers to a limit by addition

这是我现在拥有的代码:

for(int i=0; i< 35; ++i)
{
    int a = 1;
    a+=1;
    Console.WriteLine(a);
}

输出为:

2
2
2
...

依此类推,直到循环终止。

我想做的是将前两个数字相加得到巢号,然后一直到 34。

您的意思是通过添加其他数来计算某个数字并将其用作什么?逃生条件?就当做加法常量?

作为转义条件:

using System;
public class Program
{
    static private int a = 0;
    static private int i = 0;
    public static void Main()
    {
        for (i = 0; i < 100; i++){
            a += i;
            if (a == 595) break;
        }
        Console.WriteLine(i);
    }
}

另外作为常量:

using System;
public class Program
{
    static private int a = 0;
    static private int i = 0;
    static private int d = 1;
    public static void Main()
    {
        for (i = 0; i < 34; i++){
            a += d;
        }
        Console.WriteLine(a);
    }
}

两者都使用起来似乎非常不合逻辑:/

编辑: 你的问题现在和你之前说的不一样了:D

您想知道为什么 a 不大于 2?因为你在 for 循环的每一步都初始化了它。您需要将初始化移出 for 的范围。试试这个:

using System;
public class Program
{
    static private int a = 0;
    static private int i = 0;
    static private int d = 1;
    public static void Main()
    {
        int a = 1;
        for(int i=0; i< 34; ++i)
            {
            Console.WriteLine(a);   
            a+=1;

            }
    }
}

我知道你需要从 1 到 34 的数字。所以你不能从 1 开始,立即递增 1 然后写它,因为它将是 2。先写,然后递增。

或者你可以从0开始,然后你可以先递增。但也要调整结束条件。

您在每次迭代中声明了一个新变量 a,然后将其加 1。由于 a 的初始值为 1,因此每次迭代都会计算 1+1。在调试器中单步执行代码以了解我的意思。

将声明移出循环,您应该会看到所需的输出:

int a = 1;
for(int i=0; i< 35; ++i)
{
    a+=1;
    Console.WriteLine(a);
}

关于如何打印斐波那契数列的教程有很多,例如使用两个嵌套的 for 循环:

for (int i = 0; i < 10; ++i)
{
    int a = 0;
    int b = 1;
    for (int j = 0; j < i; ++j)
    {
        var temp = a;
        a = b;
        b = temp + b;
    }

    Console.WriteLine(a);
}

示例取自 dotnetperls(尽管由我稍作编辑)。

这就是您实现目标的方式:

//Initializing the elements
int a = 0;
int b = 1;
int c = 1;

Console.WriteLine(a); //Typing the 0'th element
Console.WriteLine(b); //Typing the first element

for(;c <= 34; c = a + b) {
    Console.WriteLine(c); //Typing the actual element
    a = b;
    b = c;
}