int pow(int a,int n) ::这个递归函数的目的是 求 a^n 次方,并返回结果。
2 * a^(n-1) 就等于 a^n 。不要往里绕,很容易绕进去,每次递归 n 的值都会减1,最终n会变成0,而 a^0 = 1,这个就是递归的终止条件。
int pow(int a,int n)
{
if (n == 0)
{
return 1;
}
return 2 * pow(a, n - 1);
假设 a=2,n=3,求a^n。
第一次进入程序,a=2,n=3判断语句无效,进入第一次递归,a=2,n=2判断语句无效,第二次进入递归,a=2,n=1判断语句无效,第三次进入递归,a=2,n=0判断语句有效返回1,回到第二次递归1*2=2,返回2。回到第一次递归2*2=4,返回4,退出所有递归 继续执行程序返回4*2=8, 最终的返回结果为8。 return 2 * pow(a, n - 1) == return 2 * 4 = 8
1 * 2 * 2 * 2 = 8
下面是 递归求平方 的程序
#include<stdio.h>
int pow(int a,int n)
{
if (n == 0)
{
return 1;
}
return 2 * pow(a, n - 1);
}
int main()
{
int a = 2;
int n = 3;
printf("请输入底数->:");
scanf_s("%d", &a);
printf("请输入次方数->:");
scanf_s("%d", &n);
int get = pow(a,n);
printf("%d", get);
return 0;
}