正文

“大整数阶乖”问题的递推算法2007-10-26 18:07:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/andyhou/30506.html

分享到:

“大整数阶乖”问题的递推算法 /* 标题:<<系统设计师>>应试编程实例-[递推算法程序设计] 作者:成晓旭 时间:2002年09月11日(11:52:00-16:26:00)    实现递推算法的大整数阶乖处理函数 时间:2002年09月16日(18:38:00-20:02:00)    实现“斐波那契数列”问题的递推算法函数*/ //:============================“大整数阶乖”问题的递推算法===========================#define  MAXN 1000  //最大数据位数//用递推法求取整数k的阶乖,将结果放入数组array中void pnext(int array[],int k){ int *temp; //动态数组[临时存储运算大整数] int i,j,num_len = array[0],carry,t; //循环变量,长整数位数,进位标志,临时变量 if(array[0] >= MAXN) {  printf("数据处理位数超过程序设计上限,程序将自动中断运行!\n");  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;   else    t = array[i] + carry; //处理最高位   //数据位调整   array[i] = t % 10;   carry = t / 10;  }  if(carry)   array[++num_len] = carry; //在最高位记录进位标志 } free(temp); array[0] = num_len;}//显示阶乖结果void Show_Result(int array[],int base_number){ int i; printf("%4d!=",base_number); for(i=array[0];i>0;i--)  printf("%d",array[i]); printf("\n\n");}//计算数据的阶乖void Count_Result(int array[], int base_number){ int k; array[0] = 1; array[1] = 1; for(k=2;k<=base_number;k++) {  pnext(array,k);  Show_Result(array,k); }}//:============================“大整数阶乖”问题的递推算法=========================== 

阅读(2480) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册