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

题目:有一对兔子,从出生后第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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值