爱问知识人 爱问教育 医院库

一道递归题目

首页

一道递归题目

C语言 通过递归函数的定义,计算某非负整数n的阶乘并输出结果值。
程序答案如下
long fac(int n)
{
long f;
if(n==0)
f=1;
else
f=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?

提交回答
好评回答
  • 2009-03-13 02:34:19
    假如把第五行改成return 1; 
    return(f);改成 return(n*fac(n-1));
    你还有问题吗?
    如果有,那么
    A{...call B;...}
    B{...call C;...}
    C{...return;}
    C里的return,是回到B里面还是会到A里面?
    现在还有问题吗?

    f***

    2009-03-13 02:34:19

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 178-197
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):