对于递推的简单思考

       最近做了几个关于递推的题目,基本的感触就是这玩意,对排列的要求高,而且还要有一颗善于发现规律的眼睛,当然这少不了数学洞察力。今天上午做了一个有关卡特兰数的题,当然涉及到卡特兰数一般就会涉及到大数的运算。今天最大的收获就是改变以往对大数运算的方法,基于以前对大数的模拟方法,进行了革命性的改进(以前见到大数运算就头疼),这里总结一下:

         以前模拟大数运算总是用字符串,这也是导致效率低下的主要原因。今天改用整形数组,数组的每个元素保存一定的位数(以前用字符串模拟时,一个元素只能表示一位),这样就不要进行逐位模拟,每次可以运算一定说量的位数。这样也提高运算的效率。这种模拟大数的方法尤其对求大数的阶乘“疗效”更是显著。

      big[0]=n;flow=0;flag=1;//
        for(i=n-1;i>0;i--)
            {
                flow=0;
                for(j=0;j<flag;j++)
                {
                    sum=big[j]*i+flow;
                    flow=sum/100000;
                    big[j]=sum%100000;
                }if(flow){big[j]=flow;flag++;}
            }

 

转载于:https://www.cnblogs.com/orangeblog/archive/2011/10/18/2216955.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值