【算法】Fibonacci(斐波那契数列)相关问题
一、列出Fibonacci数列的前N个数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Fibonacci
{
class Program
{
static void Main(string[] args)
{
cal();
cal2();
//运行结果相同
}
/*需求:列出Fibonacci数列的前N个数*/
//方案一:迭代N次,一次计算一项
public static void cal(int N)
{
int f1 = ;
int f2 = ;
int f = ;
for (int i = ; i <= N; i++)
{
if (i == )
{
Console.Write(f1);
Console.Write(" ");
}
else if (i == )
{
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 = ;
int f2 = ;
for (int i = ; i <= N / ; 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 == )
return ;
if (N == )
return ;
else
return F(N - ) + F(N - );
}
}
}
三、古典问题:有一对兔子,从出生后第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 = ;
int f2 = ;
for (int i = ; i <= integer; i++)
{
Console.Write("{0} {1}",f1,f2);
Console.Write(" ");
if (i%==)
Console.WriteLine("\n");
f1 = f1 + f2;
f2 = f2 + f1;
}
} }
}
若后续有相关问题,余则继续补充。
愿诸位朋友及时指正!
【算法】Fibonacci(斐波那契数列)相关问题的更多相关文章
- 递归算法之Fibonacci 斐波那契数列第n个数的求解
Fibonacci 斐波那契数列第n个数的求解,也可以用递归和非递归的形式实现,具体如下,dart语言实现. int fibonacci(int n) { if (n <= 0) throw S ...
- 算法导论-求(Fibonacci)斐波那契数列算法对比
目录 1.斐波那契数列(Fibonacci)介绍 2.朴素递归算法(Naive recursive algorithm) 3.朴素递归平方算法(Naive recursive squaring) 4 ...
- 剑指offer-第二章算法之斐波拉契数列(青蛙跳台阶)
递归与循环 递归:在一个函数的内部调用这个函数. 本质:把一个问题分解为两个,或者多个小问题(多个小问题相互重叠的部分,会存在重复的计算) 优点:简洁,易于实现. 缺点:时间和空间消耗严重,如果递归调 ...
- Reverse反转算法+斐波那契数列递归+Reverse反转单链表算法--C++实现
Reverse反转算法 #include <iostream> using namespace std; //交换的函数 void replaced(int &a,int & ...
- lintcode:Fibonacci 斐波纳契数列
题目: 斐波纳契数列 查找斐波纳契数列中第 N 个数. 所谓的斐波纳契数列是指: 前2个数是 0 和 1 . 第 i 个数是第 i-1 个数和第i-2 个数的和. 斐波纳契数列的前10个数字是: 0, ...
- [BSGS算法]纯水斐波那契数列
学弟在OJ上加了道"非水斐波那契数列",求斐波那契第n项对1,000,000,007取模的值,n<=10^15,随便水过后我决定加一道升级版,说是升级版,其实也没什么变化,只 ...
- Python算法_斐波那契数列(10)
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 ...
- javascript:算法之斐波那契数列
一 //1,1,2,3,5,8,13,21这个数列 斐波那契 数列(肥波哪弃) //得到第9项是几? /*******************************111111111递归的思想*** ...
- PHP算法之斐波那契数列(递归)
/*斐波那契数列 源代码分析 f(x) = 1 ; 当 x < 2 ; f(x) = f(x-1)+f(x-2); 当 x >= 2 ; 通项式为:fn ={((1+根号5)/2)^n-( ...
- Fibonacci(斐波那契数列)的最佳实践方式(JavaScript)
1)低级版本 var fibonacci = function(n) { if (n == 0 || n == 1) { return n; } else { return fibonacci(n - ...
随机推荐
- 时间format函数引爆的知识点和年末有话说
年末感慨 转眼之间,一年的最后一天来了. 2017,技术界貌似正在飞跃.多年的量变终于引起了质变. 人工智能,区块链.对此,我很激动,激动着有点害怕,害怕中有点紧张,还有点渴望.未来的至高点,未来的风 ...
- Unittest组织用例的姿势
本文我们将会讲解Python Unittest 里组织用例的5种姿势. 环境准备: python 3.0以上 python requests库 小编的环境: python 3.6.4 一.TestLo ...
- 大数据量高并发访问SQL优化方法
保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用SQL时,尽量把 ...
- Java ping 主机 端口
22:04:08.002 [main] INFO Ping - 目标地址 192.168.1.107 是否可到达:true 22:04:08.006 [main] INFO Ping - 执行命令 p ...
- C# 读写XML文件的方法
C# 读写XML文件的方法 一.写XML文件 XmlDocument xmlDocument = new XmlDocument();xmlDocument.AppendChild(xmlDocume ...
- 用 Java 实现断点续传参考 (HTTP)
断点续传的原理 其实断点续传的原理很简单,就是在 Http 的请求上和一般的下载有所不同而已. 打个比方,浏览器请求服务器上的一个文时,所发出的请求如下: 假设服务器域名为 ...
- 全栈工程师,也叫全端工程师,英文FullStackdevelopver。是指掌握多种技能,并能利用多种技能独立完成产品的人。
全栈工程师的发展 在系统全面的大公司,全栈工程师并没有一个稳定的发展职位.我无比赞同知乎那个帖子里面这样的一句话: 一个真正的全栈工程师,目标只有一个:创业. 听起来有些悲凉,但事实就是如此.任何一个 ...
- 深入剖析javaScript中的深拷贝和浅拷贝
如何区分深拷贝与浅拷贝,简单来说,假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,如果B没变,那就是深拷贝:我们先看两个简单的案例: //案例1(深拷贝) var a ...
- JavaScript 创建对象的七种方式
转自:xxxgitone.github.io/2017/06/10/JavaScript创建对象的七种方式/ JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以 ...
- ArcGIS 从FileGDB中导出数据异常 000732
错误代码:000732 产生原因:文件夹命名时起名为“xxx.gdb”,造成是系统识别异常.