“大整数阶乖”问题的递推算法

/*
标题:<<系统设计师>>应试编程实例-[递推算法程序设计]
时间:2006年09月11日(11:52:00-16:26:00)
实现递推算法的大整数阶乖处理函数
时间:2006年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(
"数据处理位数超过程序设计上限,程序将自动中断运行! ");
  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(
" ");
}

// 计算数据的阶乖
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);
 }

}

// :============================“大整数阶乖”问题的递推算法=========================== 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值