我想使用递归来计算2的幂。这是我的代码:

class Aufg1{
    public static void main(String args[]){
        int erg = zweiHochPositiv(10);
    }

    public static int zweiHochPositiv(int exponent){
        if(exponent > 0)
            return (2*zweiHochPositiv(exponent--));
        else
            return 1;
    }
}


我有很多错误

return (2*zweiHochPositiv(exponent--));


但我不知道有什么问题。

最佳答案

更换

return (2*zweiHochPositiv(exponent--));




return (2*zweiHochPositiv(exponent - 1));


exponent--求和为exponent变量的值,然后递减。因此,当您调用zweiHochPositiv(1)时,该方法将再次调用zweiHochPositiv(1)

结果,此方法在使用值> 0进行调用时将无限期递归,并最终使堆栈溢出。

10-07 23:56