方法一:
int my_pow(int n, int k) //简单if递归
{
if (k == 0){
return 1;
}
return n*my_pow(n,k-1);
}
int main()
{
int n = 4;
int k = 3;
int pow = my_pow(n, k);
printf("n^k=%d\n", pow);
system("pause");
return 0;
}
方法二:
int my_pow(int n, int k) //简单while递归
while (k > 0)
{
return n*my_pow(n, k - 1);
}
return 1;
}
int main()
{
int n = 4;
int k = 3;
int pow = my_pow(n, k);
printf("n^k=%d\n", pow);
system("pause");
return 0;
}
错误示例:
int my_pow(int n, int k)
{
int ret = 1;
while (k > 0)//在while循环中递归不直接返回而选择赋值,将无法离开循环,一
//直在1到0之间循环
{
ret = n*my_pow(n, k - 1);
}
return ret;
}
int main()
{
int n = 4;
int k = 3;
int pow = my_pow(n, k);
printf("n^k=%d\n", pow);
system("pause");
return 0;
}
修改
int my_pow(int n, int k)
{
int ret = 1;
if (k > 0)
{
ret = n*my_pow(n, k - 1);
}
return ret;
}
int main()
{
int n = 4;
int k = 3;
int pow = my_pow(n, k);
printf("n^k=%d\n", pow);
system("pause");
return 0;
}