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
运行结果: