如何通过加法将数字迭代到极限
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;
}
这是我现在拥有的代码:
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;
}