zoukankan      html  css  js  c++  java
  • 斐波拉切数列

    问题陈述:

           Fibonacci为1200年代的欧洲数学家,在他的著作中曾经提到:若有一只兔子每个月生一只小兔子,一个月后小兔子也开始生产。起始只有一只兔子,一个月后就有两只兔子,二个月后有三只兔子,三个月后有五只兔子(小兔投入生产)......。这就是Fibonacci数列,一般习惯称之为费氏数列,例如如下: 1 1 2 3 5 8 13 21 34 55 89.....

    问题解法:

           根据问题陈述,我们可以将费氏数列定义为一下:

           F(n) = F(n-1) + F(n-2)        if n > 1

           F(n) = 1                             if n = 0, 1

           Fibonacci有两种最常见的解法,即迭代法和递归法。

    代码详解:

     1 /*
     2 注:fibanacci数列下标从0开始
     3 fibRecurse(int n) 递归计算数列下标为n的值
     4 fibIterate(int n) 迭代计算数列下标为n的值
     5 */
     6 #include <stdio.h>
     7 #include <stdlib.h>
     8 
     9 int fibRecurse(int n);
    10 int fibIterate(int n);
    11 
    12 int main()
    13 {
    14     int i, n;
    15     printf("Please input a number : ");
    16     scanf("%d", &n);
    17     printf("Recursion:
    ");
    18     for(i=0; i<n; i++) {
    19         printf("%-5d",fibRecurse(i));
    20         if((i+1)%10 == 0) {
    21             printf("
    ");
    22         }
    23     }
    24     printf("
    ");
    25     printf("Iteration:
    ");
    26     for(i=0; i<n; i++) {
    27         printf("%-5d",fibIterate(i));
    28         if((i+1)%10 == 0) {
    29             printf("
    ");
    30         }
    31     }
    32     return 0;
    33 }
    34 
    35 int fibRecurse(int n) {
    36     if(n < 0) {
    37         return -1;
    38     }
    39     if(n==0 || n==1) {
    40         return 1;
    41     }else {
    42         return fibRecurse(n-1) + fibRecurse(n-2);
    43     }
    44 }
    45 
    46 int fibIterate(int n) {
    47     int a = 1, b = 1, i, s;
    48     if(n < 0) {
    49         return -1;
    50     }
    51     if(n==0 || n==1) {
    52         return 1;
    53     }else {
    54         for(i=1; i<n; i++) {
    55             s = a+b;
    56             a = b;
    57             b = s;
    58         }
    59     }
    60     return s;
    61 }

    转载请注明出处:http://www.cnblogs.com/michaelwong/p/4114942.html

  • 相关阅读:
    初探XML
    Hibernate 由实体类与配置文件的配置关系生成数据库中的表
    利用JSP中的过滤器解决中文乱码问题
    关于iBatis配置xml文件时出现中文注释出错的一个问题(很坑爹.)
    Myeclipse中xml文件里自动提示消失解决办法
    iBatis的基本配置+CRUD操作
    Myeclipse下配置svn
    Hibernate与iBastis 比较(转载)
    本人了解的分页查询
    Hibernate五大核心接口简介
  • 原文地址:https://www.cnblogs.com/michaelwong/p/4114942.html
Copyright © 2011-2022 走看看