谈谈递归的缺点

2017-11-20  本文已影响0人  IELBHJY

最近在求解一个带约束条件的路径问题。用的A*算法,可是编程的时候发现,明明思路逻辑没有问题,但是运行的时候总报奇怪的错误。比如:
Exception in thread "main" java.lang.StackOverflowError
at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:691)
at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:579)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:271)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
当时一脸懵逼,这都是啥,怎么堆栈会溢出。。各种百度,各种可能出错的地方都试了,还是不行,终于看到一篇博客,上面写着是递归过多的原因。我自己写了代码试了一下,果然如此。具体看代码。

public class Main {

    static int count=1;
    public static void testRecurise()
    {
        while(count<10000){
            System.out.println("函数运行了"+String.valueOf(count)+"次");
            count++;
            testRecurise();
        }
    }
    public static void main(String[] args) {
    // write your code here
        testRecurise();
        System.out.println("执行其余的代码");
    }
}

运行结果如图所示


屏幕快照 2017-11-20 下午11.27.16.png

总结一下,尽量用循环而不用递归。

上一篇 下一篇

猜你喜欢

热点阅读