<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
/**//*
标题:>应试编程实例-[递推算法程序设计]
作者:成晓旭
时间:2002年09月11日(11:52:00-16:26:00)
实现递推算法的大整数阶乖处理函数
时间:2002年09月16日(18:38:00-20:02:00)
实现“斐波那契数列”问题的递推算法函数
*/
#include"stdio.h"
#include"stdlib.h"
//:============================“大整数阶乖”问题的递推算法===========================
#defineMAXN1000//最大数据位数
//用递推法求取整数k的阶乖,将结果放入数组array中
voidpnext(intarray[],intk)
...{
int*temp;//动态数组[临时存储运算大整数]
inti,j,num_len=array[0],carry,t;//循环变量,长整数位数,进位标志,临时变量
if(array[0]>=MAXN)
...{
printf("数据处理位数超过程序设计上限,程序将自动中断运行! ");
exit(1);
}
temp=(int*)malloc(sizeof(int)*(num_len+1));//创建动态数组
for(i=1;inum_len;i++)
temp[i]=array[i];//保存原始数据
for(j=1;jk;j++)
...{
for(carry=0,i=1;inum_len;i++)
...{
if(iarray[0])
t=array[i]+temp[i]+carry;
else
t=array[i]+carry;//处理最高位
//数据位调整
array[i]=t%10;
carry=t/10;
}
if(carry)
array[++num_len]=carry;//在最高位记录进位标志
}
free(temp);
array[0]=num_len;
}
//显示阶乖结果
voidShow_Result(intarray[],intbase_number)
...{
inti;
printf("%4d!=",base_number);
for(i=array[0];i>0;i--)
printf("%d",array[i]);
printf(" ");
}
//计算数据的阶乖
voidCount_Result(intarray[],intbase_number)
...{
intk;
array[0]=1;
array[1]=1;
for(k=2;kbase_number;k++)
...{
pnext(array,k);
Show_Result(array,k);
}
}
//:============================“大整数阶乖”问题的递推算法===========================
//:============================“斐波那契数列”问题的递推算法===========================
/**//*
问题描述:
标准斐波那契数列:
F(0)=0,F(1)=1,Fn)=F(n-2)+F(n-1)(当n>1时)
广义斐波那契数列:
F(0)=0,F(1)=0,F(2)=1,Fn)=F(n-3)+F(n-2)+F(n-1)(当n>2时)
*/
//标准斐波那契数列的递推算法函数
intStd_Fibonacci(intnumber)
...{
intf0=0,f1=1,result,loop;//初始值1,2,返回结果,循环计数器
if(number==0)return(0);
if(number==1)return(1);
for(loop=2;loopnumber;loop++)
...{
result=f0+f1;//由前两步的结果计算当前结果--->“推出”
f0=f1;//把原来的前一步当作下一次的前两步--->“传递”
f1=result;//把当前结果当作下一次的前一步--->“传递”
}//注意:在进行这种向前传递的操作时,特别小心传递的时序
return(result);
}
//广义斐波那契数列的递推算法函数
intExt_Fibonacci(intnumber)
...{
intf0=0,f1=0,f2=1,result,loop;//初始值1,2,3,返回结果,循环计数器
if(number==0||number==1)return(0);
if(number==2)return(1);
for(loop=2;loopnumber;loop++)
...{
result=f0+f1+f2;//由前三步的结果计算当前结果
f0=f1;
f1=f2;
f2=result;
}//注意:在进行这种向前传递的操作时,特别小心传递的时序[即:变量间赋值的前后关系及先后顺序]
return(result);
}
voidRun_Fibonacci()
...{
intlarge,result;
while(large!=9910)
...{
printf(" 请输入斐波那契数列的元素个数[Enter'9910'toExit]: ");
scanf("%d",&large);
if(large!=9910)
...{
//result=Std_Fibonacci(large);
result=Ext_Fibonacci(large-1);
printf("斐波那契数据中的第[%d]= %d ",large,result);
}
}
}
//:============================“斐波那契数列”问题的递推算法===========================
intmain(intargc,char*argv[])
...{
/**//*
intLargeArray[MAXN],large=0;
while(large!=9910)
{
printf("请输入需要求取其阶乖的整数[Enter'9910'toExit]: ");
scanf("%d",&large);
if(large!=9910)
Count_Result(LargeArray,large);
}
*/
Run_Fibonacci();
printf(" 应用程序运行结束! ");
return0;
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=935912
分享到:
相关推荐
关于大整数乘法的复杂度分析和选择最优的数学公式
一般的整数规划问题一直没有很好的解决方案,遗传算法是一个比较好的尝试
大整数算法和二分搜索算法大整数算法和二分搜索算法大整数算法和二分搜索算法大整数算法和二分搜索算法大整数算法和二分搜索算法大整数算法和二分搜索算法大整数算法和二分搜索算法
C 算法 整数划分问题的源代码实现过程!
整数变换问题。关于整数i 的变换f 和g 定义如下:f(i)=3i;g(i)=i/2。 试设计一个算法,对于给定的2 个整数n 和m,用最少的f 和g 变换次数将n 变换为m。 例如,可以将整数15 用4 次变换将它变换为整数4:4=gfgg(15)...
算法分析PPT(分治法-大整数、矩阵相乘).ppt)
对算法分析与设计课程中大整数乘法的实现,并实现不同位数的大整数相乘
主要简述了分数阶PID与整数阶PID的区别以及联系,做了仿真比较。
问题描述: 大于1 的正整数n可以分解为:n=x1*x2*…*xm。 算法设计: 对于给定的正整数n,编程计算n共有多少种不同的分解式。 例如,当n=12 时,共有8 种不同的分解式: 12=12; 12=6*2; 12=4*3; 12=3*4; 12=3*2*...
大整数相乘问题利用分而治之算法--来源于平时的作业
解大整数 矩阵 乘法 算法设计 实验报告与源代码工程
大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm 例如:当n=12时,共有8种不同的分解式: 12 = 12 12 = 6*2 12 = 4*3 12 = 3*4 12 = 3*2*2 12 = 2*6 12 = 2*3*2 12 = 2*2*3 对于给定正整数n,计算n共有多少...
整数变换问题。关于整数i 的变换f 和g 定义如下:f(i)=3i;g(i)=i/2。 试设计一个算法,对于给定的2 个整数n 和m,用最少的f 和g 变换次数将n 变换为m。 例如,可以将整数15 用4 次变换将它变换为整数4:4=gfgg(15)...
大整数乘法 数据结构 算法 精度 硬件限制。
大整数的乘法 算法课程设计 比较简单大家快来看看吧
将正整数n表示成一系列正整数之和,n=n1+n2+...+nk,其中n1>n2>...>nk,k>=1。正整数n的不同划分个数称为n的划分数
为了对大规模整数规划问题的求解方法提供参考,对基于智能算法求解整数规划问题的研究进行了分析和评述。鉴于现有算法的缺陷与不足,讨论了应用智能算法求解整数规划问题未来可能的研究方向。
旅行商问题的0-1整数规划模型及算法
此文件包含一个大整数类的c++实现,并且利用此大整数类实现了求两个大整数的最大公约数的算法。大整数可以表示无限大的整数,从而摆脱了硬件平台的限制。
设计数据结构完成长整数的表示和存储,并编写算法来实现两长整数的加、减、乘、除等基本代数运算。 基本要求 ① 长整数长度在一百位以上。 ② 实现两长整数在取余操作下的加、减、乘、除操作,即实现算法来...