斐波那契数列

本文介绍了一个用于计算斐波那契数列并在指定长度内打印数列的程序实现,包括内存分配、异常处理及结果溢出判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

斐波那切数列:An = A(n-1)+A(n-2) n>2 , A1=A2=1

程序本身 没什么难度。代码在VS2010下调试通过。

详情 看函数注释了 。

#include <iostream> #include <iomanip> using namespace std; /*计算数列,并将结果放入参数内存中*/ bool Fibonacci(int* pBuffer, int num) { int a1 = 1; int a2 = 1; int temp = 0; if(num<2 || pBuffer==NULL) return false; try { pBuffer[0] = a1; pBuffer[1] = a2; for(int index=2; index<num; index++) { pBuffer[index] = pBuffer[index-1]+pBuffer[index-2]; if(*(pBuffer+index)<0) { pBuffer[index] = 0; return true; } } } catch(exception e) { return false; } return true; } /*打印数列,宽度8,如果在参数指定数值长度内遇到0,说明计算溢出,有效结果结束*/ void PrintNums(int* pBuffer, int num) { cout<<setw(8); try { for(int i=0; i<num; i++) { if(*(pBuffer+i)==0) { cout<<endl<<"结果溢出"<<endl; break; } else cout<<*(pBuffer+i)<<" "; } } catch(exception e) { return; } } /*从主程序中分离出来的业务逻辑,主要是界面*/ void CalculateFunc() { int num=0; int* pBuffer = NULL; cout<<endl<<"请输入数列长度:"; cin>>num; if(num<2) { cout<<endl<<"长度不得小于2"<<endl; return; } pBuffer = new int[num]; if(pBuffer == NULL) { cout<<endl<<"内存分配失败"<<endl; return; } memset(pBuffer, 0, num*sizeof(int)); if(Fibonacci(pBuffer, num)) { PrintNums(pBuffer, num); } delete pBuffer; pBuffer = NULL; return; } int main() { int num = 0; while(true) { cout<<"\n功能选择:"<<endl; cout<<"\t1.计算斐波那切数列"<<endl; cout<<"\t2.退出程序"<<endl; cin>>num; if(num!=1 && num!=2) { cout<<"请重新选择"<<endl; continue; } if(num==1) { CalculateFunc(); continue; } else if(num==2) { break; } } return 1; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值