算法之斐波那契数列(Fabonacci)
2014-03-28 14:31
288 查看
Algorithm
Gossip: 费式数列
说明:Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。
如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生产,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列,例如以下:
1、1、2、3、5、8、13、21、34、55、89......
解法:依说明,我们可以将费氏数列定义为以下:
fn = fn-1 + fn-2 if n > 1
fn = n if n= 0, 1
C 语言版本:
Java版本:
Algorithm
Gossip: 费式数列
说明:Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。
如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生产,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列,例如以下:
1、1、2、3、5、8、13、21、34、55、89......
解法:依说明,我们可以将费氏数列定义为以下:
fn = fn-1 + fn-2 if n > 1
fn = n if n= 0, 1
C 语言版本:
#include "stdio.h" #include "conio.h" int main() { int a,b,c; int i; int n; a = 1; b = 1; c = a + b; printf("请输入迭代次数:\n"); scanf("%d",&n); for(i = 0; i< n ; i ++) { c = a+ b; a = b; b = c; } printf("%d月后的兔子总数目为:%d\n",n,c); getch(); return 0; }
Java版本:
import java.util.Scanner; public class Fabonacci { public static void main(String[] args) { int a,b,c; a = 1; b = 1; c = a + b; int n; Scanner input = new Scanner(System.in); System.out.println("请输入迭代月数:"); n = input.nextInt(); for(int i = 0; i < n; i ++) { c = a + b; a = b; b = c; } System.out.printf("%d月之后的兔子总量为:%d\n",n,c); } }
相关文章推荐
- 每天一道算法--经典兔子繁殖迭代问题(斐波那契数列)
- [算法]java实现 二分查找 斐波那契数列 静静思考
- C++计算斐波那契数列第n项(类型越界算法)
- 《BI那点儿事》Microsoft 时序算法——验证神奇的斐波那契数列
- 斐波那契数列算法优化
- 【转】斐波那契数列算法分析
- 关于斐波那契数列的复杂度最低算法
- 小小算法程序,斐波那契数列的数组实现
- 剑指offer-算法题练习:part7 斐波那契数列-斐波那契数列问题
- 剑指offer-算法题练习:part10 矩形覆盖-斐波那契数列问题
- 算法设计:斐波那契数列
- 奇妙的算法—Python计算斐波那契数列
- 算法题4 斐波那契数列
- 斐波那契数列算法分析
- 斐波那契数列的算法比较
- 基础算法思想_递归——斐波那契数列
- 斐波那契数列(二)--矩阵优化算法
- 算法一---斐波那契数列
- 九度 Online Judge 算法 刷题 题目1075:斐波那契数列
- 校招准备系列:每天一道算法题(13)-斐波那契数列