java中的递归算法(java递归算法经典实例)

package test;

java中的递归算法(java递归算法经典实例)

public class CircleMt {

    public static int operate(int a ,int b,String operation){

        if(operation.equals(\"+\")){

            return a+b;

        }else if(operation.equals(\"-\")){

            return a-b;

        }

        return 0;

    }

    public static void main(String[] args) {

        System.out.println(operate(operate(operate(1,4,\"+\"),2,\"+\"),3,\"-\"));

    }

}

java 为什么递归算法一定要有递归出口

没有出口,会死循环的java中的递归算法。死循环的程序,解决不了问题(程序是为解决问题才编写的。一个死循环的程序几乎不具有价值(51单片机里有死循环有用的,比如用while(1){}控制的led程序一直闪))。但凡能用递归的,不一定能用for,while循环,但for,while循环都能转化为递归。递归在某些情况(不知道循环多少次能找到答案的题目中,特别好使)

从内存角度讲,递归没有出口,它会不停的创造方法,一直占内存,直到内存占满,或溢出,导致系统over了。假设我们只是用递归一直输出一句话,一直调用自己,没有结束,估计只有新手才会这样做。(毫无意义),从算法五大特性来讲,有穷性,确定性,可行性,输入,输出,来说,不符合有穷性(一个算法必须总是在有限次的执行后结束,且每一步都能在有限时间内完成)。

JAVA如何用递归算法打印出d:\\test目录下的所有文件名

File file=new File(\"d:\\tes\");

void listFil(File file)

{

 File []files=file.listFiles();

 for(File fil:files)

 {

  if(fil.isDirectory())

   listFil();

   System.out.println(\"file:\"+fil);

   }

}

想要这样的效果:将D盘内所有的文件,文件夹都列出来就是用System.out.println();输出文件名,文件大小打印单个文件,我会,但是遍历打印,我不会~~~~~~哪个高手会?写段简短的代码好不?