黑马程序员技术交流社区

标题: 不用for或while循环遍历数组得到遍历数组的效果 [打印本页]

作者: 雪风飞花    时间: 2015-5-13 01:20
标题: 不用for或while循环遍历数组得到遍历数组的效果
前两天偶然听见一个锻炼思维方式的题,今天来分享一下,不用for或while循环,遍历数组,具体实现如下:
  1. public class Test {
  2.         //定义一个静态变量
  3.         private static int i =0;
  4.         public static void main(String[] args) {
  5.                 //创建一个数组
  6.                 int[] arr = {21,13,24,12,25,11,14};
  7.                 //将得到的值赋给一个变量
  8.                 int a = run(arr);
  9.                 System.out.println(a);
  10.         }
  11.         //创建遍历数组的方法不采用循环遍历方法
  12.         public static int run(int[] array){
  13.                 //将得到的数组中的值赋给一个变量
  14.                 int j = array[i++];
  15.                 //对数组的索引下标进行判断如果等于数组长度返回其中的值
  16.                 if( i == array.length){
  17.                         return j;
  18.                 }
  19.                 //输出数组中得到的值
  20.                 System.out.print(j+" ");
  21.                 //调用自身
  22.                 run(array);
  23.                 //将得到的值返回,为了避免数组下标越界,将i的值减1
  24.                 return array[i-1];
  25.         }        
  26. }
复制代码
有什么需要改进的地方,还请各位大神指点。


作者: 冷月霜飞    时间: 2015-5-13 08:55
很棒!向你学习
作者: 快乐Anne    时间: 2015-5-13 11:06
想法新颖,很不错,顶一下
作者: 浅浅诗行    时间: 2015-5-13 11:47
其实跟你的一样,只不过我觉得已经在方法中输出了数组中的值,这个方法就没有必要返回值
  1. package test;

  2. public class Test {
  3.          //定义一个静态变量
  4.     private static int i =0;
  5.     public static void main(String[] args) {
  6.             //创建一个数组
  7.             int[] arr = {21,13,24,12,25,11,14};
  8.             run(arr);
  9.     }
  10.     //创建遍历数组的方法不采用循环遍历方法
  11.     public static void run(int[] array){
  12.             //将得到的数组中的值赋给一个变量
  13.             int j = array[i++];
  14.             //对数组的索引下标进行判断如果等于数组长度返回其中的值
  15.             if( i == array.length){
  16.                     return ;
  17.             }
  18.             //输出数组中得到的值
  19.             System.out.print(j+" ");
  20.             //调用自身
  21.             run(array);
  22.     }      
  23. }
复制代码

作者: 崔小可    时间: 2015-5-14 23:25
递归算法呀  
作者: 雪风飞花    时间: 2015-5-14 23:32
崔小可 发表于 2015-5-14 23:25
递归算法呀

:lol只是不用for和while循环
作者: 彭越    时间: 2015-5-14 23:39
飘过piaoguo
作者: 雪风飞花    时间: 2015-5-14 23:42
浅浅诗行 发表于 2015-5-13 11:47
其实跟你的一样,只不过我觉得已经在方法中输出了数组中的值,这个方法就没有必要返回值
...

:lol看着差不多,比我的好
作者: 雪风飞花    时间: 2015-5-14 23:44
多谢兄弟们送的黑马币
作者: xuelanghu120    时间: 2015-5-14 23:47
浅浅诗行 发表于 2015-5-13 11:47
其实跟你的一样,只不过我觉得已经在方法中输出了数组中的值,这个方法就没有必要返回值
...

老感觉这个方法好,第一个楼主的方法两个输出语句中感觉第一个输出语句没有输出是的
作者: xuelanghu120    时间: 2015-5-14 23:51
雪风飞花 发表于 2015-5-14 23:44
多谢兄弟们送的黑马币

客气 ,在发帖子还有币送
作者: 李超然    时间: 2015-5-15 10:57
递归调用,代码简洁,但效率不一定高,但是递归这种思想确实很重要。
作者: hzhzhen    时间: 2015-5-15 12:16
谢谢分享 帮顶一下
作者: 雪风飞花    时间: 2015-5-15 21:42
xuelanghu120 发表于 2015-5-14 23:51
客气 ,在发帖子还有币送

我在想想发点什么好
作者: 代码搬运1号    时间: 2015-5-15 22:01
牛 , 受教了 !!!!!!
作者: Melo    时间: 2015-5-15 22:48
很有想法 顶一下
作者: 魔蝎座    时间: 2015-5-15 22:50
写的很好




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