一、列出Fibonacci數列的前N個數
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Fibonacci { class Program { static void Main(string[] args) { cal(20); cal2(20); //執行結果相同 } /*需求:列出Fibonacci數列的前N個數*/ //方案一:迭代N次,一次計算一項 public static void cal(int N) { int f1 = 1; int f2 = 1; int f = 0; for (int i = 1; i <= N; i++) { if (i == 1) { Console.Write(f1); Console.Write(" "); } else if (i == 2) { Console.Write(f2); } else { f = f1 + f2; f2 = f1; f1 = f; Console.Write(" "); Console.Write(f); } } } //方案二:迭代N/2次,一次計算兩項 public static void cal2(int N) { int f1 = 1; int f2 = 1; for (int i = 1; i <= N / 2; i++) { Console.Write(" "); Console.Write(f1); Console.Write(" "); Console.Write(f2); f1 = f1 + f2; f2 = f2 + f1; } }
二、求出Fibonacci數列第N個數字(遞迴)
namespace Fibonacci { class Program { static void Main(string[] args) { string N = Console.ReadLine(); int integer = Convert.ToInt32(N); Console.WriteLine("{0}",F(integer)); } /*需求:求出Fibonacci數列第N個數字*/ //遞迴 public static int F(int N) { if (N == 1) return 1; if (N == 2) return 1; else return F(N - 1) + F(N - 2); } } }
三、古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
問題分析:其兔子數目依舊是按1,1,2,3,5…的順序進行排列。其本質仍為斐波那契數列。
解決:按照一中的方案二進行即可。
namespace Fibonacci { class Program { static void Main(string[] args) { //與方案二相同 string N = Console.ReadLine(); int integer = Convert.ToInt32(N); int f1 = 1; int f2 = 1; for (int i = 1; i <= integer; i++) { Console.Write("{0} {1}",f1,f2); Console.Write(" "); if (i%2==0) Console.WriteLine(" "); f1 = f1 + f2; f2 = f2 + f1; } } } }
若後續有相關問題,餘則繼續補充。
願諸位朋友及時指正!