本当に恥ずかしい!!再帰を使用して数値「a」(「a」の累乗「b」)のべき乗を計算する次の小さなプログラムの動作を理解できません。この背後で使用されているロジックを親切に説明してください。 "x*x" パラメータ、n/2 パラメータ、および "n modulo 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;
}