一、列出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;elsereturn 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("\n");
- f1 = f1 + f2;
- f2 = f2 + f1;
- }
- }
-
- }
- }
若后续有相关问题,余则继续补充。
愿诸位朋友及时指正!