#include <stdio.h>
#include <conio.h>
int count;
int main()
{
int newpow(int m,int n);//求m的n次方
int m=0,n=0;
printf("Please input m and n:");
scanf("%d%d",&m,&n);
fflush(stdin);
printf("The reslut is :%d\nThe count is :%d",newpow(m,n),count);//为什么这里的count只会输出0???
getch();
}
int newpow(int m,int n)
{
count++;
printf("\n%d\n",count);
if(n==1)
return m;
if(n%2!=0)
return m*newpow(m,n-1);
return newpow(m,n/2)*newpow(m,n/2);
}
问题在中间注释里,请大家帮帮忙,非常感谢
我还想问一下,如何计算递归进行的次数和相乘的次数
还是不行,但是我记得全局变量是自动初始化为0的吧
追答xxcc309说的挺有道理,你可以调整下代码结构试试
#include <stdio.h>
#include <conio.h>
int count = 0;
int newpow(int m,int n,int *count)
{
++*count;
printf("\n%d\n",*count);
if(n==1)
return m;
if(n%2!=0)
return m*newpow(m,n-1,count);
return newpow(m,n/2,count)*newpow(m,n/2,count);
}
int main()
{
int newpow(int m,int n,int *count);//求m的n次方
int m=0,n=0;
printf("Please input m and n:");
scanf("%d%d",&m,&n);
printf("The count is :%d\nThe reslut is :%d\n",count,newpow(m,n,&count));//为什么这里的count只会输出0???
system("pause");
}
错在全局变量和局部变量的模糊不清。上面代码就可以解决问题。