线程“ main”中的异常,递归产生java.lang.StackOverflowError

问题描述 投票:0回答:1

我编写了代码,但是它对于小型输入正常工作,并且需要很长时间才能达到平均大小的输入,但是对于大型输入,它在线程“ main”中显示异常java.lang.StackOverflowError这是我的代码,请帮助我解决此问题

    import java.util.*;
    public class demo{
    public static long print(long N){
    if(N==0)
        return 0;
    else if(N==1)
        return 1;
    else if(N==-1)
        return -1;
    else 
        return(2*print(N-1)+3*print(N-2));
 }
    public static void main(String[] args){
        long N;
        long cases=0;
    Scanner scan = new Scanner(System.in);
        N = scan.nextLong();
        if(N<0)
        N*=(-1);
        cases=print(N);
        System.out.println(cases); 
}
}
tail-recursion
1个回答
0
投票
来自JavaCodeGeeks:
© www.soinside.com 2019 - 2024. All rights reserved.