为什么递归函数在返回时取最新值?

阿查尔
#include<stdio.h>
int fun(int ,int);
main()
{
        int res;
        res=fun(2,4);
        printf("in main() res=%d\n",res);
}
int fun(int x,int n)
{
        int val=1;
        val=1;
        if(n>0)
        {
                if(n%2==1)
                        val=val*x;
                val=val*fun(x*x,n/2);
        }
}

我中间我在执行val = val * x时得到val = 16,但返回时不采用该值?为什么返回时取该变量的最新值?

放松

您必须return在函数中获得所需的结果,最后一行应为:

return val;

您应该对此进行编译器诊断。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章