Console.WriteLine("你想得到的斐波那契数列长度:");
int len = int.Parse(Console.ReadLine());//长度
int a = 0, b = 1;//a代表第一项,b代表第二项
for (int i = 0; i < len; i++)
{
if (i == 0)//输出第一项
{
Console.WriteLine("第{0}项:{1}", i, a);
}
else if (i == 1)//输出第二项
{
Console.WriteLine("第{0}项:{1}", i, b);
}
else
{
int c = a + b;//c代表第三项,第三项等于第一项加第二项
//0 1 1
//1 2 3 这里代表第几项
//a b c 这里是这一次,这一次计算出了第三项,我们要为下一次计算第三项做准备
//下一次
//0 1 1 2
// 1 2 3 第几项
// a b c abc应该代表的值
//再下一次
//0 1 1 2 3
// 1 2 3 第几项
// a b c abc应该代表的值
//0 1 1 2 3 5 8
//a b c
// a b c
// a b c
// a b c
// a b c
a = b;//第一项
b = c;//第二项
Console.WriteLine("第{0}项:{1}", i, c);//输出
}
}
数组写法
Console.WriteLine("你想得到的斐波那契数列长度:");
int len = int.Parse(Console.ReadLine());//长度
int[] arr = new int[len];//声明一个长度为len的数组
arr[0] = 0;//初始化第一项为0
arr[1] = 1;//初始化第二项为1
Console.WriteLine("第{0}项:{1}", 0, arr[0]);//输出
Console.WriteLine("第{0}项:{1}", 1, arr[1]);//输出
for (int i = 2; i < len; i++)//循环,从2开始到len结束
{
arr[i] = arr[i - 1] + arr[i - 2];//第i项为前两项的和
//假设i=2时
//arr[2]=arr[2-1]+arr[2-2];
//arr[2]=arr[1]+arr[0];
//arr[2]=1+0;
//arr[2]=1;
//假设i=3时
//arr[3]=arr[3-1]+arr[3-2];
//arr[3]=arr[2]+arr[1];
//arr[3]=1+1;
//arr[3]=2;
Console.WriteLine("第{0}项:{1}", i, arr[i]);//输出
}
递归做法
Console.WriteLine("你想得到的斐波那契数列长度:");
int len = int.Parse(Console.ReadLine());
for (int i = 0; i < len; i++)
{
Console.WriteLine("第{0}项:{1}", i, f(i));
//f(0)=0;
//f(1)=1;
//f(2)=1;
//f(3)=f(3-1)+f(3-2);
//=f(2)+f(1);
//=1+1;
//=2;
//f(4)=f(4-1)+f(4-2);
//=f(3)+f(2);
//=f(3-1)+f(3-2)+f(2);
//=f(2)+f(1)+f(2);
//=1+1+1;
//=3;
}
//函数
public static int f(int n) {
if (n <= 0)
{
return 0;
}
else if (n == 1 || n == 2)
{
return 1;
}
else {
return f(n - 1) + f(n - 2);
}
}