斐波那契數列的三種寫法
阿新 • • 發佈:2018-12-12
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); } }