递归阶乘中的函数返回

 1 def jc(num)
 2   res = 1
 3   if num != 1:
 4     res = num * jc(num - 1)
 5   else:
 6     res = 1
 7   return res
 8 
 9 
10 jc_res = jc(5)

1 )jc_res 调用了 jc(5) 函数

2 )jc(5) 开始执行,判断 5 != 1 是否成立

3 )判断成立后,进入 if 语句内

4 )分析可知:jc(5) = 5 * jc(4)

5 )所以要想得到 jc(5) 的值,就需要先得到 jc(4) 的 值,因此 jc(5) 调用了 jc(4)

  此过程中,由于 jc(5) 没有得到结果,所以 jc(5) 处于等待状态

6 )以此类推,直到 jc(2) = 2 * jc(1)

7 )当函数为 jc(1) 时,不再满足 num != 1,所以进入 else 语句内

  又因为 jc(1) = 1,至此,不需要再调用 jc() 函数

8 )因为 jc(2) 调用了 jc(1) ,根据函数返回的特性,谁调用函数,该函数就返回到调用者那里

9 )所以可以得到 jc(2) 的值,又因为 jc(3) = 3 * jc(2),可以得到 jc(3) 的值

10 )以此类推,最终得到 jc(5) 的值

11 )又因为 jc(5) 被 jc_res 调用,将最终结果返回给 jc_res

12 )结束

 

posted on 2018-03-30 11:09  TrancezZ  阅读(263)  评论(0)    收藏  举报

导航