课程
/后端开发
/C
/C语言入门
如果n=5,在方法里result = factorial(n-1)*n; 实现的应该是4*5,为什么还会1*2*3*4*5呢???
新手这里面没有循序,所以想不明白,请大神指点一下!!!!!
2016-06-18
源自:C语言入门 5-7
正在回答
”当碰到一个条件的时候都会再重复的从头说起“,理解这句话就行了,程序执行到“result=factorial(n-1)*n时,遇到了factorial(n-1),所以程序要从头开始执行,此时n=n-1;这就完成了循环
go_bacK_love 提问者
factorial()是个递归函数,当执行result = factorial(n-1)*n;时,实现的并不是4*5,因为factorial(n-1)会继续执行函数factorial()。简单来说就是函数里面套函数,直到满足跳出条件(本例中,main函数中n=5,所以它的跳出条件就是n==1),某种意义上也是一种循环吧
factorial(5) result=f(4)*5
f(4) result=f(3)*4
f(3) result=f(2)*3
f(2) result=f(1)*2
f(1) result=1
然后跳出 往回带 result=1*2*3*4*5
return result
举报
C语言入门视频教程,带你进入编程世界的必修课-C语言
2 回答阶乘的实现
2 回答那个阶乘的计算
2 回答例题中为什么n的值没有变,却能计算阶乘呢。
2 回答为什么我这个代码计算阶乘不行呢
2 回答我想把代码改为输入n,求n的阶乘