斐波那契数列的三种写法

abc写法

            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);
            }
        } 

猜你喜欢

转载自blog.csdn.net/qq_41613385/article/details/82863110
今日推荐