首页 > 解决方案 > 我不明白递归方法

问题描述


    public static double calculatePower (double x, int y) {
        if (y == 0) 
           return 1;
        else 
           return (int) calculatePower(x, y-1);

我了解如何调用递归函数,但不了解它是如何被取消的。

我认为,如果在某些时候y=1该函数应该return 1是因为该if声明。但它没有,我不明白为什么

标签: javamethods

解决方案


对于每次递归调用,传入y参数都会减少一个,因为您编写了calculatePower(x, y-1);. 在某些时候y0递归停止。

请注意,您的功率计算是错误的,您应该x * 在实际递归调用之前添加一个:x * calculatePower(x, y-1)


推荐阅读