int main(void) { /*经过优化后的递归法求m的n次幂*/ int m; int n; printf("请输入mn的值:"); scanf("%d%d",&m,&n); printf("%ld",MyPow(m,n)); getch(); return 0; }
unsigned long MyPow(int m, int n) { unsigned long tmp; if (0 == n) { return 1; } if (1 == n) { return m; } if (0==n%2) { tmp = MyPow(m,n/2); return tmp*tmp; } if (0 != n%2) { return m*MyPow(m,n-1); } }
void fillMatrix(int n, double **t, double x0) { int i, j; for (j = 0; j < n; j++) { t[0][j] = 1; for (i = 1; i < n; i++) { if (i + j < n)t[i][j] = t[i - 1][j] * (n - i - j); } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (i + j < n)t[i][j] *= MyPow(x0, n - j - i - 1); } } }
DWORD CharToDword(TCHAR* start, DWORD length) { TCHAR temp; DWORD i; DWORD re = 0; for (i = 0; i < length; i++) { temp = start[i]; if ('0' <= temp && '9' >= temp) { re += ((temp - '0')*MyPow(10, length - i - 1)); } else { return 0; } } return re; }
double MyPow(double x0, int exp) { return exp > 0 ? MyPow(x0, exp - 1) * x0 : 1; }