首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求阶乘和效率比较高的方法 [已结贴,结贴人:rocgege]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rocgege
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-20 09:50:46 楼主
    /*
    * 阶乘和
    */
    public static long getRevers(int n){
    long sum=0;
    for(int i=0;i <=n;i++){
    long nul=1;
    for(int j=i;j>=1;j--){
    nul*=j;
    }
    sum+=nul;
    }
    return sum;
    }
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaoban0514
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 10:01:311楼 得分:0
    这个效率算什么高的啊,效率最高的是用递归.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dollyn
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 10:09:072楼 得分:0
    递归效率高??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jayflee
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 10:41:473楼 得分:10
    这个一重循环就够了(应该比较高) , 不用双重。


    Java code
    public static long getRevers(int n){ long sum=0; long nul=1; for(int i=1;i <=n;i++){ nul=nul*i; sum+=nul; } return sum; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Brokenfango
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 11:00:574楼 得分:0
    阶数太大的话 递归效率就低了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jiaping108
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 11:17:165楼 得分:0
    说实话,不是很理解你阶乘和是个什么概念,比如5的阶乘和就是5!+4!+3!+2!+1!?如果是这样的话3楼的就是错的,呵呵
    按照我理解的这样的想法写一个,分开了2个方法,但觉得效率还是比较高的~~
    Java code
    static int jiecheng(int n){ if(n == 1){ return 1; }else{ return n*jiecheng(n-1); } } static int jiechenghe(int n){ int sum = 0; for(int i=n;i>0;i--){ sum += jiecheng(i); } return sum; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jayflee
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 11:52:406楼 得分:0
    我的结果没错!!

    Java code
    System.out.println(getRevers(4));//33 System.out.println(jiechenghe(4));//33


    代码运行了 看清楚 再下结论。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wdbjsh
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 14:02:597楼 得分:0
    3楼的效率目前是最高的。

    因为它其实只计算了最高的一个阶乘--这是最浪费时间的--其它的都在过程中加了,而加法对资源的影响不大
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • door1234
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 17:38:258楼 得分:0
    投5楼一票
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rocgege
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 21:10:539楼 得分:0
    目前三楼的最强。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ychwgl158
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 21:33:0910楼 得分:0
    借宝地一用:
    请那位高手指点一下。
    WebBrowser不能够打印整个纸张页面
    请教,有那位用过WebBrowser在web程序中打印功能的。
    我现在用WebBrowser打印,WebBrowser不能够打印整个纸张页面。
    比如:我设置发票的格式为19.10*9.31cm,打印的时候,纸张的低部有2cm不能够打印。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • llw_168
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 16:56:3011楼 得分:10
    那我的算法呢?

                int n = 10;
                long result = 0;

                for(int i = n; i >= 1; --i )
                {
                    result = (result + 1) * i;
                }

    ??????数字不要太大即可以.  我的重点是算法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zapdos
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 17:04:1512楼 得分:0
    +了*
    *了+
    应该没有什么效率的区别吧?
    不过换成
    ++再*
    可能会提高一点点点点......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • skyqiang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 17:05:0313楼 得分:0
    用左移了........................
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rocgege
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 20:56:3814楼 得分:0
    引用 11 楼 llw_168 的回复:
    那我的算法呢?

                int n = 10;
                long result = 0;

                for(int i = n; i >= 1; --i )
                {
                    result = (result + 1) * i;
                }

    ??????数字不要太大即可以.  我的重点是算法

    你的更容易看懂,因为这个更像阶乘公式,效率也很高,支持。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved