首页  »   C++

C++入门经典-例6.18-数组的动态分配,动态取得斐波那契数列

网友分享于:2013-11-02  浏览:0次
C++入门经典-例6.18-数组的动态分配,动态获得斐波那契数列

1:有时在获得一定的信息之前,我们并不确定数组的大小。动态分配数组则可以使用变量作为数组的大小,使数组的大小符合我们的要求。

2:科普一下斐波纳契数列:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........这个数列从第3项开始,每一项都等于前两项之和。

代码如下:

// 6.18.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
    int k=1;
    cout<<"请输入斐波纳契数列最大阶数"<<endl;
    while(cin>>k,!(2<k))??
    {
        cout<<"请输入大于2的数字"<<endl;
    }
    //  int a[k]; // 不能使用变量申请栈内存,注释掉。
    int *pArray = new int[k];  //动态数组创建,堆内存已经分配完毕
    *pArray = 1;  //斐波纳契数列第一项为、第二项为1
    *(pArray+1) =1;  // 以上两个语句为指针形式的数组表示方法
    for(int i =2;i<k;i++)
    {
        pArray[i]=pArray[i-2]+pArray[i-1];   //数组正常的表示方法
    }
    cout<<"请输入您想要获得的斐波纳契数列项的阶数"<<endl;
    int i = 0;//循环体外的i
    while(cin>>i,!(0<i&i<k+1))
    {
        cout<<"请输入介于1到"<<k<<"之间的数字"<<endl;
    }
    cout<<"斐波纳契第"<<i<<"项为:"<<pArray[i-1]<<endl;
    delete []pArray;//释放堆内存用这种方式
    return 0;
}
View Code

运行结果:

 

相关解决方案

最新解决方案