黑马程序员技术交流社区

标题: 求平方和,多种方法实现,一个简单的问题也可以多种解法 [打印本页]

作者: 段光宇    时间: 2013-11-15 20:27
标题: 求平方和,多种方法实现,一个简单的问题也可以多种解法


  1. /*
  2. *
  3. *                 思路:
  4. *                         ①计算方法,可以采用两数相乘再进行累加,也可以采用自带的Math函数处理后进行累加,还可以利用数学公式计算。
  5. *                         ②实现方法:可以使用for循环方法、do while循环方法、while循环方法、递归方法和公式直接定义方法。
  6. *                 步骤:
  7. *                         ①定义实现不同方法的静态函数,主函数可以调用。
  8. *                         ②在函数中实现计算方法。
  9. */               
  10. public class Test1 {
  11.         //-------------------------------------------------------------------------------------
  12.         //主函数用来调用不同方法的函数。
  13.         public static void main(String[] args) {               
  14.                 int sum1=formethod(1,100);
  15.                 int sum2=dowhilemethod(1, 100);
  16.                 int sum3=whilemethod(1, 100);
  17.                 int sum4=recursivemethod(1, 100);
  18.                 int sum5=formulamethod(1, 100);
  19.                 //调用5个具有不同方法的函数,将结果存入对应的5个变量中
  20.                 System.out.println("for循环方法的计算结果是:"+sum1+"\ndowhile循环方法的计算结果是:"+sum2+"\nwhile循环方法的计算结果是:"+sum3+"\n递归循环方法的计算结果是:"+sum4+"\n公式直接定义方法的计算结果是:"+sum5);
  21.                 //输出结果
  22.         }
  23.         //-------------------------------------------------------------------------------------
  24.         //利用for循环来实现数a到数b的平方和。
  25.         public static int formethod(int a,int b){
  26.                 int sum=0;//定义一个存放结果的sum变量
  27.                 for(int c=a;c<=b; c++){
  28.                         sum=sum+c*c;//将存在sum中的值和数c的平方相加得到新值,存入sum中。
  29.                 }//for语句中定义变量c=a完成变量的初始化,c<=b规定平方和计算的循环条件,c++用来运行一遍循环后修改控制循环的变量值。
  30.                 return sum;//返回sum的值。
  31.         }
  32.         //-------------------------------------------------------------------------------------
  33.         //利用do while循环来实现数a到数b的平方和。
  34.         public static int dowhilemethod(int a,int b){
  35.                 int sum=0;//定义一个存放结果的sum变量
  36.                 do{
  37.                         sum=sum+a*a;
  38.                         a++;
  39.                 }//将存在sum中的值和数c的平方相加得到新值,存入sum中,a++用来运行一遍循环后修改控制循环的变量值。
  40.                 while(a<=b);//当while语句中的“a<=b”条件不被满足时,自动停止循环
  41.                 return sum;//返回sum的值。
  42.         }
  43.         //-------------------------------------------------------------------------------------
  44.         //利用while循环来实现数a到数b的平方和。
  45.         public static int whilemethod(int a,int b){
  46.                 int sum=0;//定义一个存放结果的sum变量
  47.                 while(a<=b){
  48.                         sum=sum+a*a;
  49.                         a++;
  50.                 }//将存在sum中的值和数c的平方相加得到新值,存入sum中,a++用来运行一遍循环后修改控制循环的变量值。当while语句中的“a<=b”条件不被满足时,自动停止循环
  51.                 return sum;//返回sum的值。
  52.                 }
  53.         //-------------------------------------------------------------------------------------
  54.         //利用递归方法来实现数a到数b的平方和。
  55.         public static int recursivemethod(int a,int b){
  56.         if(a==b){
  57.         return (int)Math.pow(a, 2);//如果第一个值与最后一个值相同,利用math类中的幂计算函数计算后直接返回此值的平方。
  58.         }
  59.         return b*b+recursivemethod(a, b-1);//利用递归方法,调用自身计算出结果。
  60.         }
  61.         //-------------------------------------------------------------------------------------
  62.         //直接定义公式来实现数a到数b的平方和。
  63.         public static int formulamethod(int a,int b){
  64.                 int sum=0;//定义一个存放结果的sum变量
  65.                 int c=a-1;//若a不等于1,计算a与1的差
  66.                 sum=b*(b+1)*(2*b+1)/6-c*(c+1)*(2*c+1)/6;//定义平方和公式
  67.                 return sum;//返回sum的值。
  68.         }
  69.         //-------------------------------------------------------------------------------------
  70.        
  71. }
复制代码

作者: 天ya~_琼楼    时间: 2013-11-16 00:27
很厉害,特别是最后一种方法,让我想到了待定系数法和数学归纳法,如果不是今天看到楼主写的公式,我估计这些知识在我脑子里会沉睡一辈子也不会苏醒!谢谢楼主!




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