永发信息网

C语言求阶乘,堆栈问题

答案:2  悬赏:10  手机版
解决时间 2021-04-06 05:27
C语言求阶乘,堆栈问题
最佳答案
举例,10的阶乘,先下楼后上楼
第一层,10的阶乘fact(10),不满足结束条件,进入下一层,10*fact(9).
第二层,9的阶乘fact(9),不满足结束条件,进入下一层,9*fact(8)
...
第10层,1的阶乘fact(1),不满足结束条件,进入下一层,1*fact(0)
第11层,0的阶乘,满足结束条件,fact(0)=1,可以上楼了。
第10层,1的阶乘为1*fact(0)=1
第9层,2的阶乘为2*fact(1)=2
。。。
第1层,10*fact(9)=。。。

这些层就是堆栈,一层层下去,满足递归条件后再一层层上来。完成递归。
追问:能解释下每句代码的意思吗?我实在是不懂,老师要我们讲这道题作为考试
追答:有两个大括号,一个是main,这是主函数,是程序的入口
1)声明了两个长整型的变量x,k。
2)读取x的值
3)调用fact函数,并将返回值赋值给k
4)输出k的值

fact是一个求阶乘的函数,参数是长整型的,返回值也是长整型的,中间就是它的功能,利用递归来求阶乘。
全部回答

 你可以这样跟你老师解释这个阶乘递归的执行流程(包含递归工作栈的情况记录):
首先,当n不为,则进入递归,并且当前递归函数所有有关的值也进栈,反复如此进栈,直到n等于0,这一阶段称为递归试探阶段。
然后,当n等于0时,则出栈了,由栈顶往栈底方向出栈。这一阶段称为递推阶段。


你还可以现场示范给你老师看,把工作栈的进入和出栈的记录情况写在黑板上。


如:设n=5,则递归工作栈如下所示:
1、第一阶段:试探


    y=1*fact(0) <===栈顶
    y=2*fact(1) 
    y=3*fact(2) 
    y=4*fact(3) 
    y=5*fact(4) <===栈底


2、第二阶段:递推
    因为n等于0时,则y=1返回1 即fact(1)返回1
    
   第一次出栈情况:
    y=1*fact(0)  <===由栈顶开始陆续出栈 y=1*1=1 把fact(0)=1的结果返回给调用处即下一个栈
    y=2*fact(1) 
    y=3*fact(2) 
    y=4*fact(3) 
    y=5*fact(4) 


   第二次出栈情况:
    y=2*fact(1)  <===由栈顶开始陆续出栈 y=2*1=2
    y=3*fact(2) 
    y=4*fact(3) 
    y=5*fact(4) 


   第三次出栈情况:
    y=3*fact(2) <===由栈顶开始陆续出栈 y=3*2=6
    y=4*fact(3) 
    y=5*fact(4) 


   第四次出栈情况:
    y=4*fact(3) <===由栈顶开始陆续出栈 y=4*6=24
    y=5*fact(4) 


  第五次出栈情况:
    y=5*fact(4)  <===由栈顶开始陆续出栈 y=5*24=120


   至此,栈底为NULL,把控制权返回给调用函数处(这里即main函数)
   打印输出 k=120


我想这种回答肯定能令你老师满意。老师一看就是知道你是非常熟悉栈的运行原理。long fact(long n){
long y;
if (n == 0) y = 1;  // 递归出口条件,如果n等于0,则y=1
else y = n*fact(n - 1); // 递归调用
return y;  // 将本次递归得到的值返回给上一层调用的递归函数
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
盆腔积液为什么大便肚子特疼
二年级的感悟语句,二年级常用的好句子
电磁炉里G7PH35UD1-E,可以用H15R1203代替吗?
单选题2009年4月,甲型H1N1流感在墨西哥爆发
山底下一个今念什么
钞汇是什么意思,结汇·售汇·付汇 ~各怎样解
士博教育跟山香哪个教师招考辅导的好
雪铁龙爱丽舍风扇98度才转怎么解决
出生于农历1997年10月11日已时,运势如何
初级会计证没过咋办 还有什么同等级的考试吗
朋友圈的内容怎样删除,如何删除微信朋友圈的
—The paint on the doorhas to dry for anot
手机充电,充电器炸了手机也开不了机了,是什
土鸡公怎样炖肉嫩
猪肝能不能用食用碱水泡
推荐资讯
耳康滴耳液怎么用,耳康滴耳液小猫能用吗
寒暖流交汇为什么回带来丰富的饵料?
中国外逃贪官或达多少人 携款多少亿
三相电机用单相电怎么接
带珍和龙的爱情诗句,带龙的诗句 50分
你没什么了不起,你只是正合我意
描写陶渊明的美文,陶渊明的散文有哪些?
张家界天门山距离江苏南通多少公里
1955年阳历10月5日生日
哪个牌子的空调好?
奥黛丽赫本名言食物,形容食物不好吃 有什么成
表示无聊的歇后语俗语,关于俗语 15分
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?