帮忙解释下这个C程序

[复制链接]
查看11 | 回复3 | 2009-7-23 14:55:49 | 显示全部楼层 |阅读模式
【例8.5】用递归法计算n!
用递归法计算n!可用下述公式表示:
n!=1
(n=0,1)
n×(n-1)!
(n>1)
先看看数学搞清楚什么是阶乘....好像是高中时候上的吧~—~n!表示N的阶乘n! = 1 (n=0,1)当n等于0,或者1的时候n的阶乘等于1n×(n-1)!
(n>1) 当n大于1的时候n的阶乘等于n乘以(n-1)的阶乘 【例8.6】Hanoi塔问题==>汉诺塔问题 先搞清楚这个吧
回复

使用道具 举报

千问 | 2009-7-23 14:55:49 | 显示全部楼层
move(n-1,y,x,z); 主要是这一句在捣鬼,它是在move函数内部调用move函数本身
回复

使用道具 举报

千问 | 2009-7-23 14:55:49 | 显示全部楼层
8.5中在运用是肯定是先输入一个n值,比如n=5.那么在运行上述算法时过程如下:5!==5*4!4!==4*3!3!==3*2!2!==2*1!1!==11*0!0!==1计算机运行时相当于 先自上往下,再自下往上分层代入即可。至于8.6我记得书上讲的有,我也不太懂
回复

使用道具 举报

千问 | 2009-7-23 14:55:49 | 显示全部楼层
程序中使用递归时,同一件事情解决步骤会以指数级增长(可以参阅ANSI C 应用程序设计》,对递归接讲解的比较详细,故而运行步骤多、时间长
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行