/**//*标题:<<系统设计师>>应试编程实例-[递推算法程序设计]作者:成晓旭时间: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;i<=num_len;i++)temp[i]=array[i];//保存原始数据for(j=1;j<k;j++)...{for(carry=0,i=1;i<=num_len;i++)...{if(i<=array[0])t=array[i]+temp[i]+carry;elset=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;k<=base_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;loop<=number;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;loop<=number;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;}