以下是我现在的代码:
for(int i=0; i< 35; ++i)
{
int a = 1;
a+=1;
Console.WriteLine(a);
}
输出结果为:
2
2
2
...
依此类推,直到循环结束。
我想要做的是添加前两个数字来制作巢号,然后一直到34。
答案 0 :(得分:1)
这就是你如何实现你想要的目标:
//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;
}
答案 1 :(得分:0)
你的意思是通过添加其他数字并将其用作什么来计算到某个数字?逃生条件?就像一个常数一样?
作为逃避条件:
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
你想知道为什么不会超过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开始然后你可以先增加。但也要调整结束条件。
答案 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的例子(尽管我稍作编辑)。