递归与循环

递归和迭代都是循环的一种。

递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。


递归变循环的文件扫描列子:

递归:

dealFile(String filePath) {
          // 若是目录, 采用递归的方法遍历子目录     

       File f = new File(path);
        if(f.isDirectory()){
            File[] t = f.listFiles();
            for(int i=0; i< t.length; i++){
                if( t[i].isFile()||f.isDirectory()){
                    //递归
                    dealFile(f.getAbsolutePath());
                }
            }
        }
        else{
          //todo with file
            }
        }
     
    }


循环

  Stack<String> filestack = new Stack<String>();
            File f= null;
          filestack.push(path);
          String tmpFP="";
          while(f !=null ||  !filestack.empty())
          {
              if(f == null){
                  tmpFP = filestack.pop();              
                  f= new File(tmpFP);
              } else{
                  if(f.isDirectory()){
                        File[] t = f.listFiles();
                        for(int i=0; i< t.length; i++){
                            if(t[i].isFile() || t[i].isDirectory()){
                                //入展
                                filestack.push(t[i].getAbsolutePath());                             
                            }
                        }
                        f=null;
                        continue;
                  } else{

                          //todo with file

                   }

                    f = null;

          }

}

你可能感兴趣的:(递归,迭代)