100经典算法之(一)---Fibonacci Numbers

来源:互联网 发布:max+守望先锋数据 编辑:程序博客网 时间:2024/06/06 03:11

题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

分析:兔子个数为斐波那契数列,1 1 2 3 5 8 13 ………

程序如下:

                            //数组法#include <stdio.h>#define N 50                 //宏定义int main()                           {                                        int array[N];            //装每月兔子个数的数组    int i,month;             //i为循环变量    printf("请输入月份:");    scanf("%d",&month);                 array[0]=1;    array[1]=1;    for(i=0;i<month-1;i++)             {        array[i+2]=array[i+1]+array[i];                    }    for(i=1;i<month+2;i++)  //这个for循环中的“i=1,i<month+2,a[i-1]”格式是为了输出美观    {        printf("%-10d ",array[i-1]);        if(i%4==0) printf("\n");    }return 0;}//我的理解:宏定义的方式便于改变数组的长度,先挖个坑,以后再补//另一种方法,我觉得和数组的思路相似#include <stdio.h>int main(){    int f1=1,f2=1;    int i;        //i为循环变量    int month;    //求第n(n为奇数)和n+1个月时,令month=(n+1)/2,如求第九和第十个月 month=5               printf("请输入月份:");    scanf("%d",&month);    for(i=1;i<=month;i++)    {      printf("%-10d %-10d",f1,f2);      if(i%2==0) printf("\n");       //控制四个一行         f1=f1+f2;                      //我觉得这儿有点像数组      f2=f2+f1;    } return 0;}