课本上的提示,可能让你写个递归:
static void Main(string[] args)
{
for (int i = 1; i <= 10000; i++)
{
Console.Write("{0,15}", F(i));//输出一个数,这个数占15个位置
if (i % 4 == 0)
Console.WriteLine();//每4个换一行
}
Console.ReadKey();
}
//第n个数
private static int F(int n)
{
if (n == 1 || n == 2)
return 1;
else
return F(n - 1) + F(n - 2);
}
//我正好也在做这道题,楼上的大神代码我测试了一遍,有一些小缺陷,当fibonncci值>10000时无法停止,以下是我修改过的代码:
private static int F(int n)
{
if (n == 1 || n == 2)
return 1;
else
return F(n - 1) + F(n - 2);
}
static void Main(string[] args)
{
int i = 1;
while (F(i) < 10000)
{
Console.Write("{0,10}", F(i));//输出一个数,这个数占10个位置
if (i % 5 == 0)
Console.WriteLine();//每5个换一行
i++;
}
console.ReadKey;
}
static void Main(string[] args)
{
List
int num = 0;
while (num <= 10000)
{
if (list.Count == 0)
{
num = 1;
}
else if (list.Count == 1)
{
num = 1;
}
else
{
num = list[list.Count - 1] + list[list.Count - 2];
}
list.Add(num);
Console.WriteLine(num);
}
Console.ReadLine();
}
用两个函数实现,应该可以解决问题
static Int32 fibo(Int32 n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
{
return fibo(n - 1) + fibo(n - 2);
}
}
static void disfibo()
{
Int32 i = 1,k=0;
Int32 res=fibo(i);
while (res< 10000)
{
Console.Write(" {0}",res);
i++;
k++;
if (k % 5 == 0)
Console.Write("\n");
res = fibo(i);
}
return;
}