黑马程序员技术交流社区

标题: 求和算法 [打印本页]

作者: 仰天长啸    时间: 2015-3-1 22:35
标题: 求和算法
以下是我的代码,求的是1!+2!+3!........+19!+20!之和
帮我看下我的代码哪里出了问题{:3_54:}
作者: 仰天长啸    时间: 2015-3-1 22:36
这是截图

QQ截图20150301223143.jpg (72.15 KB, 下载次数: 207)

QQ截图20150301223143.jpg

作者: Imp_x    时间: 2015-3-1 22:39
阶乘错了  自己再看下{:3_60:}
作者: 仰天长啸    时间: 2015-3-1 23:06
谢谢,好久没写代码了很生疏,刚改动下了下这回算是改对了        //1!+2!+3!.....+20!

        private static int jiecheng(int i) {
                if(i==1){
                        return 1;
                }else{
                        return i*(i-1);
                }
               
        }
        public static void main(String[] args) {
                        int sum=0;
                for(int j=1;j<21;j++){
                        sum=sum+jiecheng(j);
                       
                }
                System.out.println(sum);
}
}                结果是2610


作者: 习惯就好    时间: 2015-3-1 23:34
本帖最后由 习惯就好 于 2015-3-1 23:36 编辑

你的算法好像不对!应该用递归比较简单
  1. class  jiecheng
  2. {

  3.           private static int jiecheng(int i) {
  4.                 if(i==1){
  5.                         return 1;
  6.                 }else{
  7.                         return i*jiecheng(i-1);//此处用递归,主函数才能得到最终结果
  8.                 }
  9.                
  10.         }
  11.         public static void main(String[] args)
  12.                         {
  13.                         int sum=0;
  14.                 for(int j=1;j<21;j++){
  15.                         sum=sum+jiecheng(j);
  16.                         
  17.                 }
  18.                 System.out.println(sum);
  19.                         }
  20. }//最终结果为268040729
复制代码

作者: 仰天长啸    时间: 2015-3-2 16:28
仰天长啸 发表于 2015-3-1 23:06
谢谢,好久没写代码了很生疏,刚改动下了下这回算是改对了        //1!+2!+3!.....+20!

        private static int jiec ...

是不对 循环还没结束我就输出结果啦
作者: 仰天长啸    时间: 2015-3-2 16:31
仰天长啸 发表于 2015-3-1 23:06
谢谢,好久没写代码了很生疏,刚改动下了下这回算是改对了        //1!+2!+3!.....+20!

        private static int jiec ...

错了,重新改动下,一会发来
作者: 仰天长啸    时间: 2015-3-2 16:33
public class 阶乘1到20阶乘之和 {
        //1!+2!+3!.....+20!
        private static int jiecheng(int i) {
                if(i==1){
                        return 1;
                }else{
                        return i*jiecheng(i-1);
                }       
        }
        public static void main(String[] args) {
                        int sum=0;
                for(int j=1;j<21;j++){
                        sum=sum+jiecheng(j);       
                }
                System.out.println(sum);
}
               
}        结果是268040729
马虎了:'(:'(




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2