请教一个递归的问题
(defun jc(n)(if(<= n 1)
1.0
(* n
( jc (1-n))
)
)
)
(defunc:tt()
(jc 5)
)
;返回120
函数自身调用硬是脑子转不过了。这个返回结果是:120真不知道怎么弄出来的<img src="http://bbs.mjtd.com/static/image/smiley/qq/em06.gif" smilieid="88" alt="" border="0">。请朋友们指点指点。谢谢! 这是计算阶乘f(n)=n!=1*2*3*...*n 你可以吧递归产生的结果看成数列,即
1! 2! 3! 4! 5!
该数列的表达式为
a(n) = n*a(n-1) n>1
= 1 n=1
如 求3!时
调用jc(3) <- 调用jc(2) <- 调用jc(1)
返回3*2<- 2*jc(1)=2<- jc(1)=1
ZZXXQQ 发表于 2015-3-29 12:10 static/image/common/back.gif
这是计算阶乘f(n)=n!=1*2*3*...*n
谢谢指点! 雪山飞狐_lzh 发表于 2015-3-29 12:16 static/image/common/back.gif
你可以吧递归产生的结果看成数列,即
1! 2! 3! 4! 5!
该数列的表达式为
多谢指导!经常看到一些大师玩这样的。只能慢慢理解琢磨。 递归调用,关键是找到退出点,你就知道运行过程和结果了 zzyong00 发表于 2015-3-29 13:45 static/image/common/back.gif
递归调用,关键是找到退出点,你就知道运行过程和结果了
谢谢!(setqn 1 )(* n (jc (1- n)))。这样返回1.我认为(1- n)=0 。(jc (1- n))返回1 。还是没透彻。 当然函数返回1时,就开始“收网”了
页:
[1]