递归的使用原理
/*
设计一个函数,用来计算b的n次方
递归的2个条件:
1.函数自己调用自己
2.必须有个明确的返回值
*/
#include <stdio.h>
int pow2(int b, int n );
int main()
{
int c = pow2(3, 2);
printf("%d\n", c);
return 0;
}
/*
pow2(b, 0) == 1
pow2(b, 1) == b == pow2(b, 0) * b;
pow2(b, 2) == b*b == pow2(b, 1) * b;
pow2(b, 3) == b*b*b == pow2(b, 2) * b;
1> n为0,结果肯定是1
2> n>0,pow2(b, n) == pow2(b, n-1) * b;
*/
// 每次调用重新分配存储空间
//方法二:使用递归
int pow2(int b, int n)
{
if(n <= 0) return 1;
return pow2(b, n-1) * b;
}
/*方法一:
int pow2(int b, int n)
{
int result = 1;
for (int i = 0; i < n ; i++)
{
result *= b;
}
return result;
}
*/