黑马程序员技术交流社区

标题: 九九乘法表求算法 [打印本页]

作者: 赵小豪    时间: 2014-4-11 23:19
标题: 九九乘法表求算法
本帖最后由 赵小豪 于 2014-4-12 17:21 编辑

九九乘法表-不使用循环输出

作者: muma    时间: 2014-4-11 23:43
  1. package com.itheima;
  2. /**
  3. * 第六题:用控制台程序倒着输出九九乘法表;输出结果按下图所示:
  4. * 1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81
  5. * ……
  6. * 1*3=3   2*3=6   3*3=9
  7. * 1*2=2   2*2=4
  8. * 1*1=1
  9. * @author muma
  10. *
  11. */



  12. /*        思路:1、发现九九乘法格是九行九列,采用嵌套循环遍历的方式;
  13.                 2、在每一行中第二个积数随着列数的增加而保持不变,定义条件,每行第二个积数随列数的增加保持不变;
  14.                 3、在每一行中表达式中的第一个积数随着列数的增加而增加,定义条件,每行第一个积数随列数增加.
  15.           步骤:1、定义循环语句,选择两个for语句进行嵌套;
  16.                 2、在外循环中定义变量y=9,随其自减而保证输出9行;
  17.                 3、在内循环中定义变量x=1,随其自增而保证输出9列,限定x<=y条件来满足九九算数格图示;
  18.                 4、在内循环中按图示写出输出表达式,在外循环输出换行。
  19. */
  20. public class Test6 {
  21.         public static void main(String[] args)
  22.         {
  23.                 for ( int y=9;y>=1;y--)//外循环控制行数,一共九行
  24.                 {
  25.                         for ( int x=1;x<=y ;x++)
  26.                         {
  27.                                 System.out.print(x+"*"+y+"="+x*y+"\t");//输出每行的图示表达式
  28.                         }
  29.                 System.out.println();//换行
  30.                 }
  31.         }

  32. }
复制代码

作者: 赵小豪    时间: 2014-4-11 23:59
muma 发表于 2014-4-11 23:43

亲,请注意题目不要循环。这个小儿科啦。不用循环来实现。。。。
作者: Kelvinhu    时间: 2014-4-12 00:13
不使用循环岂不是使问题更麻烦了。。
作者: 袁啟雄x    时间: 2014-4-12 08:23
本帖最后由 袁啟雄x 于 2014-4-12 08:26 编辑

不用循环是吧,没说不可以用递归.你也不能说循环和递归一样.递归有返回过程,这点跟循环不同
  1. public class Table{

  2.         public static void main(String[] args) {
  3.                 printTable(1, 1);
  4.         }
  5.        
  6.         public static void printTable(int x , int y){
  7.                 if(x>9&&y>9) return ;
  8.                 System.out.print(x+"x"+y+"="+x*y+++"   ");
  9.                 if(y>9) {x++;y=x;System.out.println("");}
  10.                 printTable(x,y);
  11.         }

  12. }
复制代码




作者: 赵小豪    时间: 2014-4-12 08:41
袁啟雄x 发表于 2014-4-12 08:23
不用循环是吧,没说不可以用递归.你也不能说循环和递归一样.递归有返回过程,这点跟循环不同

递归不错,我很喜欢。先赞一个,但是输出的结果有那么一点。。。。。

20140412083944088.jpg (132.87 KB, 下载次数: 139)

递归九九乘法表

递归九九乘法表

作者: 赵小豪    时间: 2014-4-12 08:56
在这我分享一个不要循环输出打印《九九乘法表》的算法。我相信大家看后会明白。原理就跟我们输出一个直三角形一样的。

20140412085128475.jpg (174.92 KB, 下载次数: 125)

不用循环实现九九乘法表

不用循环实现九九乘法表

20140412085146760.jpg (177 KB, 下载次数: 117)

打印结果

打印结果

作者: 赵小豪    时间: 2014-4-12 08:59
Kelvinhu 发表于 2014-4-12 00:13
不使用循环岂不是使问题更麻烦了。。

每一个题的算法都多样的,多换换算法更好。麻烦不麻烦看你如何理解如何看待。很多东西东西等你知道真想了就会发现不过如此
作者: 赵小豪    时间: 2014-4-12 09:27
zengming13 发表于 2014-4-12 09:05
public static void main(String[] args) {
                printTable(1, 1);
        }

每个递归真喜欢,很妙很清晰。我一看就懂了。赞,太感谢了。太棒了,这就是我想要的结果。
作者: Sniper_qiu    时间: 2014-4-12 11:32
public class Test6
{
        public static void main(String[]args)
        {
                 for (int i=1,j=9; j>=1;i++)
                 {
                         //显示打印的格式为“i*j=”,同行打印
             System.out.print(i+"*"+j+"="+i*j+" ");
            
             //运算到i=j,下一行新的开始
             if(i==j)
             {
                 i=0;
                 j--;
                 System.out.println();
             }
         }
        }
}
作者: muma    时间: 2014-4-12 19:08
赵小豪 发表于 2014-4-11 23:59
亲,请注意题目不要循环。这个小儿科啦。不用循环来实现。。。。

那就很麻烦了 亲
作者: Kelvinhu    时间: 2014-4-12 19:13
= =哦对 可以用递归。




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