黑马程序员技术交流社区

标题: 菜鸟 方法a调用方法b,存在的一点疑问!! [打印本页]

作者: 仰天长啸    时间: 2015-3-2 16:46
标题: 菜鸟 方法a调用方法b,存在的一点疑问!!
我写了一串代码,是方法getsum调用方法jiecheng的时候,为什jiecheng作为参数同时也是一种方法为什么下面箭头的位置不用加(),开始我加了()编译通不过,我试试去了()就没事了 结果是1409286144
        //求1!+2!+3!+4!.......+30!之和并显示
public class firstday {
        public static void main(String[] args) {
                jiecheng(30);
                System.out.println(getsum(jiecheng(30)));
        }
       
        public  static int jiecheng(int a){
                if(a==1){
                        return 1;
                }else{
                        return a*jiecheng(a-1);
                }
        }

        public  static int getsum(int jiehcneg){//就是这里  jiecheng后面为什么不用带()
                for(int b=1;b<31;b++){
                        int sum=0;
                        sum=sum+jiecheng(b);
                }
                return jiehcneg;
        }

}
作者: 传慈    时间: 2015-3-2 16:51
是 jiehcneg     //int型的
不是jiecheng()~~!//函数
作者: 仰天长啸    时间: 2015-3-2 17:07
挺对不住,我再发一次代码
        //求1!+2!+3!+4!.......+30!之和并显示
public class firstday {
        public static void main(String[] args) {
                jiecheng(30);
                System.out.println(getsum(jiecheng(30)));
        }
       
        public  static int jiecheng(int a){
                if(a==1){
                        return 1;
                }else{
                        return a*jiecheng(a-1);
                }
        }

        public  static int getsum(int jiecheng){
                for(int b=1;b<31;b++){
                        int sum=0;
                        sum=sum+jiecheng(b);
                }
                return jiecheng;
        }

}


作者: 仰天长啸    时间: 2015-3-2 17:12
你的意思 在一个方法中调用另一个方法 另一个方法是被看作是参数,故尽管是方法但是当作参数的时候是不能加()
作者: Jaybor    时间: 2015-3-2 17:58
感觉有点凌乱
作者: 万合天宜    时间: 2015-3-2 18:30
getsum(int jiecheng)  括号里的只是一个传入运算的参数而已,你把他改成a,b或者c都没关系的,与你的jiecheng()方法没有半毛钱关系,不要被误导了~~
作者: 万合天宜    时间: 2015-3-2 18:31
  1. package com.itheima.test;

  2. public class firstday {
  3.         public static void main(String[] args) {
  4.                 System.out.println(getsum(jiecheng(3))); // 结果6
  5.         }

  6.         public static int jiecheng(int a) {
  7.                 if (a == 1) {
  8.                         return 1;
  9.                 } else {
  10.                         return a * jiecheng(a - 1);
  11.                 }
  12.         }

  13.         public static int getsum(int c) {
  14.                 for (int b = 1; b < 31; b++) {
  15.                         int sum = 0;
  16.                         sum = sum + jiecheng(b);
  17.                 }
  18.                 return c;
  19.         }

  20. }
复制代码

作者: 仰天长啸    时间: 2015-3-2 19:13
明白你意思了,你下边举得例子就是告诉我里面不是就是一个参数嘛

作者: 蒋文辉    时间: 2015-3-2 22:17
public class firstday {
        public static void main(String[] args) {
               
                System.out.println(getsum(30));
        }
        
        public  static int jiecheng(int a){
                if(a==1){
                        return 1;
                }else{
                        return a*jiecheng(a-1);
                }
        }

        public  static int getsum(int x){
                for(int b=1;b<x+1;b++){
                        int sum=0;
                        sum=sum+jiecheng(b);
                }
                return sum;
        }

}
这样改才行吧,你那样的话只是返回30!,没有和。
作者: 蒋文辉    时间: 2015-3-2 22:30
如果只改 return sum,不过这样的话,不管你传的参数是30还是什么,程序就只能求1!+2!+3!+4!.......+30!之和了,因为你最后传的int jiecheng 跟函数根本没有联系。
作者: 奋斗小青年    时间: 2015-3-2 22:57
楼主要明白一个问题,在你用jicheng方法进行计算的时候会得出来一个结果,这个结果就是你返回的当前数字的阶乘,是一个具体的数,所以当你求和的时候只需要给出需要算到哪一位阶乘的数字就可以了,而不是传入一个方法,因为该方法已经返回一个具体的数字,作为sum求和的一部分。
同时9楼的代码也是有问题的,sum定义在局部中是没法返回的。具体代码如下:
  1. class firstday {
  2.     public static void main(String[] args) {
  3.             jiecheng(30);
  4.             System.out.println(getsum(jiecheng(30)));
  5.     }
  6.    
  7.     public  static int jiecheng(int a)
  8.     {
  9.             if(a==1)
  10.             {
  11.                   return 1;
  12.             }
  13.             else
  14.             {
  15.                   return a*jiecheng(a-1);
  16.             }
  17.     }
  18.     //1409286144
  19.     public  static double getsum(int jiehcneg)
  20.     {
  21.             //就是这里  jiecheng后面为什么不用带()
  22.                     double sum=0;
  23.             for(int b=1;b<31;b++)
  24.             {
  25.                  sum=sum+jiecheng(b);
  26.             }
  27.             return sum;
  28.     }

  29. }
复制代码

作者: 枪杆不如笔杆    时间: 2015-3-2 23:39
没看懂...
作者: huangchunwei    时间: 2015-3-3 08:00
{:3_47:}{:3_47:}{:3_47:}{:3_47:}
作者: qq10763582    时间: 2015-3-3 09:19
誓进黑马,板凳飘过
作者: 菜鸟一号    时间: 2015-3-3 15:37
你确定int类型能装得下?
作者: 文浩    时间: 2015-3-4 15:20
你的jiecheng是个方法  不是个参数呢




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