go_bacK_love
2016-06-18 13:10
如果n=5,在方法里result = factorial(n-1)*n; 实现的应该是4*5,为什么还会1*2*3*4*5呢???
新手这里面没有循序,所以想不明白,请大神指点一下!!!!!
”当碰到一个条件的时候都会再重复的从头说起“,理解这句话就行了,程序执行到“result=factorial(n-1)*n时,遇到了factorial(n-1),所以程序要从头开始执行,此时n=n-1;这就完成了循环
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语言入门
926022 学习 · 20793 问题
相似问题