真的很尴尬!!我只是不明白下面这个小程序的工作原理,它使用递归来计算数字“a”的幂(“a”提升到“b”的幂)。请解释一下背后使用的逻辑函数。我不明白“x*x”参数、n/2 参数和“n 模 2”部分的用法。请为我剖析。
#include<stdio.h>
int foo(int,int);
int main() {
int a,b;
printf("Enter number a and its power b\n");
scanf("%d%d",&a,&b);
printf("a raised to b is %d", foo(a,b));
return 0;
}
int foo ( int x , int n) {
int val=1;
if(n>0) {
if (n%2 == 1)
val = val *x;
val = val * foo(x*x , n/2);
}
return val;
}