- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组合数学实验报告
组合数学实验报告
班级:网络091班
姓名:郭静
学号:092566
实验一 Fibonacci数非递归解
一、实验题目
Fibonacci数列的定义如下:
请用递归方法和非递归方法求解该问题,各编写一个函数,要求函数接受的值,返回的值。
二、实验要求
1 分别求的情况。
2 对比两个程序的执行时间,然后分别对两种算法进行复杂性分析。
三、实验源程序
#include iostream
#include time.h
using namespace std;
// 递归方式求解Fibonacci数列
double methodOneFibonacci(int n)
{
double result;
if(n==1 || n==2)
{
result=1;
}
else
{
result=methodOneFibonacci(n-2)+methodOneFibonacci(n-1);
}
return result;
}
// 非递归方式求解Fibonacci数列
double methodTwoFibonacci(int n)
{
double result;
double f1=1;
double f2=1;
if(n==1 || n==2)
{
result=1;
}
else
{
while(n-2)
{
result=f1+f2;
f1=f2;
f2=result;
n--;
}
}
return result;
}
double (*fibonacci)(int n);
void deal(int n)
{
// 计算结果
double result;
// 计算开始时间
clock_t start;
// 计算结束时间
clock_t finish;
// 计算花费的时间
double duration;
start=clock();
result=fibonacci(n);
coutthe result is resultendl;
finish=clock();
duration=((double)(finish-start))/CLOCKS_PER_SEC;
coutspent time is durationsendl;
}
int main(int argc,char* argv[])
{
while(1)
{
// 参数,表述计算的规模
int n;
coutinput the data n is: ;
cinn;
if(n0)
{
cout采用非递归的方法进行求解:endl;
fibonacci=methodTwoFibonacci;
deal(n);
cout采用递归的方法进行求解:endl;
fibonacci=methodOneFibonacci;
deal(n);
}
else
{
coutn is wrong,please input the n again!endl;
}
}
return 0;
}
采用递归算法时消耗太多的时间。
五、实验总结
结果截图是递归算法与非递归算法的执行时间对比。
根据两种算法所写的程序的执行时间的的对比,非递归算法要比递归算法的效率要高很多。而且随着n的逐渐增大,非递归算法的效率要远远超过递归算法的效率。但是,采用递归算法编写的程序易于理解,并且易于编写。
实验二 二项式系数的加法求解
一、实验题目
编写一个程序,只用加法,求出中取个的组合数
二、实验要求
1 要求使用公式,采用递归方法和非递归方法进行求解
2 对两种算法进行分析
三、实验源程序
#include iostream
#include time.h
using namespace std;
// 采用递归方法求解组合数
int MethodOneCombinatorics(int n,int r)
{
int result;
if(r==0 || n==1 || n==r)
{
result=1;
}
else
{
result=MethodOneCombinatorics(n-1,r)+MethodOneCombinatorics(n-1,r-1);
}
return result;
}
// 采用非递归方法求解组合数
int MethodTwoCombinatorics(int n,int r)
{
int result;
int C1=1;
int C2=1;
您可能关注的文档
- 电算化关于时间题目的汇总(要看).doc
- 电线电缆型号规格解释及表示方法.doc
- 电脑故障笔记本键盘字母变数字.docx
- 电脑基础班课件.doc
- 电视栏目分析试讲.doc
- 电路板公司实习报告.doc
- 电销保险常见问题.doc
- 男人对你动情的五大表现.docx
- 男女互送各种礼物的特殊含义(物品玫瑰巧克力).doc
- 界炮镇同文小学教学工作计划(2012上半年).doc
- 抢分秘籍10 带电粒子电场中的直线运动、偏转和交变电电场中的应用(三大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍11 带电粒子在组合场、叠加场中的运动(五大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍11 带电粒子在组合场、叠加场中的运动(五大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍12 电磁感应中的电路与图像问题(二大题型)(解析版) -2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍12 电磁感应中的电路与图像问题(二大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍14 热力学定律与气体实验定律综合应用(五大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍13 电磁感应中的动力学、能量和动量问题(三大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍14 热力学定律与气体实验定律综合应用(五大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍16 振动图像与波动图像的综合应用(三大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍15 光的折射、全反射的综合应用(二大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
文档评论(0)