房天下 > 房天下问答 > 业主生活 > 其他
  • 一道递归题目

    C语言 通过递归函数的定义,计算某非负整数n的阶乘并输出结果值。程序答案如下long fac(int n){long f;if(n==0)f=1;elsef=n*fac(n-1);return(f);}main(){int n;scanf("%d",&n);printf("%d!=%ld\n",n,fac(n));}各位达人们能不能告诉我为啥第五行是f=1。而不是直接跳出条件语句。f=1不是把1赋给f了吗。这样不是把之前的累乘结果都变回1了吗?为什么程序还能正确执行。为什么会是f=1?

    提问者:dragon8901

    发布于2011-02-10

共1个回答
  • Xsmile 丨Lv 2
    假如把第五行改成return 1; return(f);改成 return(n*fac(n-1));你还有问题吗?如果有,那么A{...call B;...}B{...call C;...}C{...return;}C里的return,是回到B里面还是会到A里面?现在还有问题吗?
    +1 2011-02-10 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。