[英]Why this C program behaves abnormally when the function is called as an argument
我创建了一个程序来计算数字的功效。 请查看工作代码:
#include <stdio.h>
#include <stdlib.h>
int power(int,int);
int main()
{
int num,n;
scanf("%d %d",&num,&n);
printf("power of %d to %d\n",num,n);
printf("%d",power(num,n));
return 0;
}
int power(int num,int n)
{
int result=0;
if(n==0)
return 1;
if(n==1)
return num;
if(n%2!=0)
{
result=num*power(num,n-1);
}
else if(n%2==0)
{
result=power(num,n/2)*power(num,n/2);
//why this hangs when i replace this statement with power(power(num,n/2),2)
}
return result;
}
只要我没有用注释中提到的语句替换最后一个语句,该程序就可以正常工作。
你能告诉我这种异常行为背后的原因吗?
只要我没有用注释中提到的语句替换最后一个语句,该程序就可以正常工作。
你能告诉我这种异常行为背后的原因吗?
这不是异常行为。
power(power(num,n/2),2)
是一个递归调用,其中从未到达基本情况,因为n == 2
因此n == 2
n % 2 == 0
的else if子句总是会被执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.