A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

再做入学检测题,有个题是编写程序计算12+22+32+....+1002的和。
一开始我的思路是定义一个变量int a=12然后for循环到1002每次+10进行累加。
但是想到了另一种不需要循环的方法,就算是投机取巧吧:lol就是直接等差数列求和公式(a1+an)*n/2求出。
但是这种方法用在这里可行吗?

20 个回复

倒序浏览
当然可行。用循环只是让你练习循环语句的使用。如果你觉得已经掌握了循环语句,那就没问题
回复 使用道具 举报
应该要写循环吧, 这种应该就是考循环的,而不是考数学知识的
回复 使用道具 举报
我是(12+1002)100/2应该是这样吧
回复 使用道具 举报
楼主很机智
回复 使用道具 举报
楼主不说 都想不到还可以这样做
回复 使用道具 举报
应该可以的,这就是算法啊!
回复 使用道具 举报
本帖最后由 勇闯☀☀黑马 于 2015-3-31 08:05 编辑

你可以定一个数组。
public static void main(String[] args)
{
  int[] arr={12,22,32.........1002};
    int sum=arr[0];
    for(x=1;x<99,x++)
     {
        sum=arr[x]+sum;
     }
   System.out.println(sum);
}
回复 使用道具 举报
王琛 来自手机 中级黑马 2015-3-31 08:07:50
9#
差是十,   
回复 使用道具 举报
编程就是这样,只要你做出来,就行。。。
回复 使用道具 举报
可以,这道题可以用很多种方法做出来,最终我们的目的都是使算法高效
回复 使用道具 举报
简化代码嘛这不很好吗
回复 使用道具 举报
只能说楼主很机智……
回复 使用道具 举报
只能说机智啊楼主!但是貌似JAVA算法结构里不接受这个等式((a1+an)*n/2)啊
回复 使用道具 举报
勇闯☀☀黑马 发表于 2015-3-31 08:02
你可以定一个数组。
public static void main(String[] args)
{

嘿嘿,忘了还有这种方法
回复 使用道具 举报
tubao1991 发表于 2015-3-31 13:41
只能说机智啊楼主!但是貌似JAVA算法结构里不接受这个等式((a1+an)*n/2)啊 ...

我可以写((12+1002)*100/2)啊:P
回复 使用道具 举报
我觉得不行,出题人是想考你循环的,你这样投机取巧不好。你要回答的不是正确的答案,而是最符合命题老师意图的答案。如果你实在是不想用循环,还有别的办法,可以用递归,这个比循环高级些,更容易展现你的实力。
回复 使用道具 举报
胡几手 发表于 2015-4-1 09:43
我觉得不行,出题人是想考你循环的,你这样投机取巧不好。你要回答的不是正确的答案,而是最符合命题老师意 ...

老师更希望看到独特的答案,亲,这可不是高考呦!只要能做出来,任何方法都可以,而且是越高效越好!
回复 使用道具 举报
楼主可以定义一个方法用来做累加和,然后把1002做参数传进去。这样便于扩展
       public static int leiJia(int num){
                int a=12,b,sum;
                b=(num-a)/10+1;
                sum=(a+num)*b/2;
                return sum;
               
        }
回复 使用道具 举报
我觉得只要做出结果就成
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马