使用递归乘以幂

not*_*33t 3 c recursion loops

我正在寻找一种编码程序的方法,该程序只使用递归循环将整数乘以指数.我对递归的理解非常有限,但是能够编写一些东西来给出一个阶乘:

int fac2(int n)
{
    if (n == 1){
        return 1;
    } else {
        return n*fac2(n-1);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有办法找到一个力量,但它使用了一个for循环:

int my_power(int x, int e)
{
    int i, total;
    total = 1;
    for (i = 1; i <= e; i++){
    total *= x;
    }
    return total;
}
Run Code Online (Sandbox Code Playgroud)

如何使用递归替换此for循环?

Dav*_*son 5

int my_power (int x, int e) {
  if (e == 0) return 1;

  return x * my_power(x, e-1);
}
Run Code Online (Sandbox Code Playgroud)