C面试题之斐波那契数列

斐波那契数列

我也没有想到会遇到一道面试题斐波那契数列:0 1 1 2 3 5 8 13 21 34 55 89 144...

   什么是斐波那契数列(Fibonacci sequence),又称为黄金分割数列,或称为兔子数列,指的是1 1 2 3 5 8 13 21 34 55 ...

其实之前也遇到这种,当时在学习c语言的时候解决了,印象并不是那么深刻,太多东西理解不到位,太多东西需要学习,然后上网找了找,其实一看原理就懂了,无外乎前两数之和等于第三项、固定前面两项而已。

C++实现方法:

     #include <iostream>

     using namespace std;

     int main(void)

     {

            int f1 = 0,f2 = 1;

            int n = 0;

            int temp = 0;

            int m = 12;// 输出前12个

            cout << “数列第1个数为”<<f1<<endl;

            cout << “数列第2个数为”<<f2<<endl;

            for (n = 3;n <=m;n++)

            {

                   temp = f2;

                   f2 = f1+ temp;

                   f1 = temp;

}     

cout << “数列第”<< n <<”个: “<<f2<<endl;

return 0;

}

这是输出斐波那契数列,当然可以封装函数。

                                   0 当N=0

f(n)=                          1当n=1

                                   f(n-1)+ f(n-2),当n>1

c语言实现方式1:数组方式,

把整个斐波那契数列当成数组的值,下面是数组序号。

int fbiArray(int n){

       if(n< 0)

{

       printf(“输入错误\n”);

       return 0;

}

       inti = 0;

       intarr[n];

       arr[0]= 0;

       arr[1]= 1;

       //从第三个数开始规则

       for(i= 2;i < n; i++){

       arr[i] = arr[i-1] + arr[i-2];

       //printf(“%d”,arr[i]);

}

       returnarr[i];

}

c语言实现方式2:递归方式.

       intfbiFunction(int i){

       if(i< 2){

              returni = 0?0:1;

       }

       returnfbiFunction(i – 1) + fbiFunction(i - 2);

}

       当然也有别的方法实现,这是最简单两种的实现方式了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值