繁体   English   中英

当函数作为参数调用时,为什么此C程序表现异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM