我的课程作业需要一点帮助 如果您从未听说过,这就是印度算法。我可以使用递归轻松地做到这一点,但不知道如何使用循环来解决它?有什么提示或建议吗?
印度算法:
3^10 = square (3^5)
3^5 = 3 * (3^4)
3^4 = square (3^2)
3^2 = square (3^1)
3^1 = 3 * (3^0)
3^0 = 1
double powerloop(double x, int n)
{
double m=x;
if (n==0)
return 1;
while(n>1)
{
if(n%2==0)
{
m=m*m;
n=n/2;
}
else
{
m=m*x;
n=n-1;
}
}
return m;
}