一般方法实现
设计一个函数,用来计算b的n次方
//设计一个函数,用来计算b的n次方
int pow2(int b, int n)
{
// 用来保存计算结果
int result = 1;
//result *= b;
//result *= b;
//result *= b;
//result *= b;
//....
//n次
for (int i = 0; i<n; i++)
{
result *= b;
}
return result;
}
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 main()
{
int c = pow2(3, 2);
printf("%d\n", c);
return 0;
}
总结
递归的2个条件:
1.函数自己调用自己
2.必须有个明确的返回值
网友评论