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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

前两天偶然听见一个锻炼思维方式的题,今天来分享一下,不用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. }
复制代码
有什么需要改进的地方,还请各位大神指点。

评分

参与人数 1黑马币 +2 收起 理由
xuelanghu120 + 2

查看全部评分

17 个回复

正序浏览
写的很好
回复 使用道具 举报
Melo 中级黑马 2015-5-15 22:48:19
16#
很有想法 顶一下
回复 使用道具 举报
牛 , 受教了 !!!!!!
回复 使用道具 举报
xuelanghu120 发表于 2015-5-14 23:51
客气 ,在发帖子还有币送

我在想想发点什么好
回复 使用道具 举报
谢谢分享 帮顶一下
回复 使用道具 举报
递归调用,代码简洁,但效率不一定高,但是递归这种思想确实很重要。
回复 使用道具 举报
雪风飞花 发表于 2015-5-14 23:44
多谢兄弟们送的黑马币

客气 ,在发帖子还有币送
回复 使用道具 举报
浅浅诗行 发表于 2015-5-13 11:47
其实跟你的一样,只不过我觉得已经在方法中输出了数组中的值,这个方法就没有必要返回值
...

老感觉这个方法好,第一个楼主的方法两个输出语句中感觉第一个输出语句没有输出是的

点评

是的,所以说我的代码还有改进空间(≧▽≦)  发表于 2015-5-14 23:49
回复 使用道具 举报
多谢兄弟们送的黑马币
回复 使用道具 举报
浅浅诗行 发表于 2015-5-13 11:47
其实跟你的一样,只不过我觉得已经在方法中输出了数组中的值,这个方法就没有必要返回值
...

:lol看着差不多,比我的好
回复 使用道具 举报
彭越 中级黑马 2015-5-14 23:39:27
7#
飘过piaoguo
回复 使用道具 举报

:lol只是不用for和while循环
回复 使用道具 举报
递归算法呀  
回复 使用道具 举报
其实跟你的一样,只不过我觉得已经在方法中输出了数组中的值,这个方法就没有必要返回值
  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. }
复制代码
回复 使用道具 举报 1 0
想法新颖,很不错,顶一下
回复 使用道具 举报
很棒!向你学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马