这样的递归该如何理解?
long int pow(long int X,unsigned int N)
{
/*1*/ if(N==0)
/*2*/ return 1;
/*3*/ if(N==1)
/*4*/ return X;
/*5*/ if(IsEven(N))
/*6*/ return pow(X*X,N/2);
else
/*7*/ return pow(X*X,N/2)*X);
}
这是计算X的N次幂的算法,IsEven(N)是判断N是不是偶数的一个函数。
第七行还可以写成pow(X,N/2)*pow(X,N/2);
这样的递归是如何执行的??
若将第六行改成return pow(pow(X,2),N/2)或return pow(pow(X,N/2),2)将会产生一个死循环,为什么??