递归阶乘中的函数返回
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 )结束
浙公网安备 33010602011771号