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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

fsociety

中级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© fsociety 中级黑马   /  2015-11-26 20:07  /  6204 人查看  /  63 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 fsociety 于 2015-11-26 20:09 编辑

要求:输出1-200(不能使用循环和if语句)
不要和我说200条print哈...

点评

while循环?  发表于 2015-12-5 16:54

63 个回复

倒序浏览
既然没办法用循环那么就用递归的思想!
public class Test
{
     
    public static void main(String[] args)
    {
       int i =1;
       printI(i);
    }
    private void printI(int i)
    {
       System.out.println(i);
       i++;
       if(i>200)
          return;
       else
          printI(i);
        
    }
}
回复 使用道具 举报
Phy_zhang 发表于 2015-11-26 20:15
既然没办法用循环那么就用递归的思想!
public class Test
{

说好不能用if的
回复 使用道具 举报

其实递归也是循环的一种,如果按照你这样说的话,我真的不知道用什么办法了....
坐等大神把!
回复 使用道具 举报
Phy_zhang 发表于 2015-11-26 20:33
其实递归也是循环的一种,如果按照你这样说的话,我真的不知道用什么办法了....
坐等大神把! ...

之前我也是想着用递归的  但是递归之后还是要判断才能结束  
回复 使用道具 举报
fsociety 发表于 2015-11-26 20:42
之前我也是想着用递归的  但是递归之后还是要判断才能结束

递归当然要有判断啦
递归如果没有判断的话其实就跟一个死循环没什么区别
回复 使用道具 举报
Phy_zhang 发表于 2015-11-26 20:44
递归当然要有判断啦
递归如果没有判断的话其实就跟一个死循环没什么区别 ...

对了   可以试试用异常
回复 使用道具 举报
水平有限没想到解决方案,等大神吧!
回复 使用道具 举报
确实有难度,小白路过
回复 使用道具 举报
  1. public class huoqu1_200 {

  2.         public static void main(String[] args) {
  3.                 int i = 1;
  4.                 print(i);
  5.                
  6.         }
  7.         public static void print(int i) {
  8.                 try {
  9.                         System.out.println(i);
  10.                         int a = i / (i - 200);
  11.                         print(i == 200 ? i : ++i);
  12.                 } catch (Exception e) {
  13.                         System.out.println("输出完毕");
  14.                 }
  15.                
  16.         }

  17. }
复制代码
回复 使用道具 举报 1 0
楼上叼  顶
回复 使用道具 举报
Weidan 中级黑马 2015-11-26 22:36:50
12#

i == 200 ? i : ++i这个不是算判断么
回复 使用道具 举报 0 1
Weidan 发表于 2015-11-26 22:36
i == 200 ? i : ++i这个不是算判断么

是判断   三元运算符呀
回复 使用道具 举报
采用递归思想:
  1. public class Demo {

  2.         public static void main(String[] args) {
  3.                 fun(200);

  4.         }
  5.         public static int fun(int num){
  6.                 System.out.println(num);
  7.                 return num == 1 ? 1 : 1 + fun(num-1);
  8.         }

  9. }
复制代码

回复 使用道具 举报
用方法嵌套行不
回复 使用道具 举报

TimerTask task=
        new TimerTask(){
                int i=0;
                @Override
                public void run() {
                        if(i>200)System.exit(0);
                        System.out.println(i++);
                       
                }};
//定时器
new Timer().schedule(task, 1, 1);
回复 使用道具 举报

同样也是递归思想,不过用的是异常来退出递归,在下甘拜下风
回复 使用道具 举报

够简洁,我喜欢
回复 使用道具 举报
MRguo 中级黑马 2015-11-27 14:13:55
19#
本帖最后由 MRguo 于 2015-11-27 14:15 编辑
Weidan 发表于 2015-11-26 22:36
i == 200 ? i : ++i这个不是算判断么

三元运算符 判断语句
回复 使用道具 举报
主要还是利用异常,我这里是利用数组角标越界异常
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 int[] arr = new int[200];
  4.                 printNum(1,arr);
  5.         }
  6.         public static void printNum(int num,int[] arr){
  7.                 try{
  8.                         System.out.println(num);
  9.                         arr[num]=0;
  10.                         printNum(++num,arr);
  11.                 }
  12.                 catch(ArrayIndexOutOfBoundsException e){
  13.                        
  14.                 }
  15.         }
  16. }
复制代码
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 加入黑马