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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小丑的媳妇2 中级黑马   /  2013-3-4 10:22  /  1699 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 朱荣宁. 于 2013-3-12 23:47 编辑

今天看毕老师视频:利用for循环打印 9*9 表?我自己找到一种方法,求高手给出其它的方法,我主要是想知道能不能用递归?多谢
用for循环打印 9*9 表?

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

1*4=4 2*4=8 3*4=12 4*4=16

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25

1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

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



//循环嵌套,打印九九乘法表

public class NineNine{

public static void main(String[]args){

System.out.println();

for (int j=1;j<10;j++){

for(int k=1;k<10;k++) { //判断语句里的 k<=j,省去下列的if语句。

if (k>j) break; //此处用 continue也可以

System.out.print(” “+k+”X”+j+”=”+j*k);

}

System.out.println();

}

}

}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

倒序浏览
这个应该可以能用递归吧,只是我想不出来。。。坐等大神。。。
回复 使用道具 举报
本帖最后由 黑马_位志国 于 2013-3-4 11:52 编辑

递归算法解决问题的特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
递归算法要求
递归算法所体现的“重复”一般有三个要求:
一是每次调用在规模上都有所缩小(通常是减半);
二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 print99(9);
  4.         }

  5.         public static void print99(int x) {
  6.                 if (x > 1)
  7.                         print99(x - 1);
  8.                 for (int i = 1; i <= x; i++) {
  9.                         System.out.print(i+"*"+x+"="+i*x+"\t");
  10.                 }
  11.                 System.out.println();

  12.         }
  13. }
复制代码
这样做就可以了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报

class Demo
{
public static void main(String[] args)
{
  nineNine(9);

}
public static  void nineNine(int i)
{
if(i==1)
{
System.out.print(i+"*"+i+"="+i*i);
}
else
{
nineNine(i-1);  
for(int j=1;j<=i;j++)
{
System.out.print(j+"*"+i+"="+j*i+"\t");
}

}
System.out.println();
}
}

递归的做法。希望对你有用
方法有很多种。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马