python小小白哟 发表于 2024-3-13 09:43:39

python中利用递归方法求5的阶乘

代码如下:

def sum(n):
    if n == 0:
      return 1
    else:
      return n * sum(n-1)

print(sum(5))

其中 return 1 这行代码是什么意思呢?

FishC 发表于 2024-3-13 09:43:50

这里的`return 1`表示当n等于0时,函数应该返回的结果是1。因为5的阶乘定义为5 × 4 × 3 × 2 × 1,其中1是乘法的基础单位,所以在递归函数中,当n等于0时,就可以结束递归了,返回结果1。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

python小小白哟 发表于 2024-3-13 09:45:29

FishC 发表于 2024-3-13 09:43
这里的`return 1`表示当n等于0时,函数应该返回的结果是1。因为5的阶乘定义为5 × 4 × 3 × 2 × 1,其中1 ...

这个return 1有什么意义呢?

FishC 发表于 2024-3-13 09:45:38

python小小白哟 发表于 2024-03-13 09:45
这个return 1有什么意义呢?

这里的`return 1`表示当递归到达基准情况(n等于0)时,返回的结果是1。在计算阶乘的过程中,当n减小到0时,就意味着已经计算到了最小的乘法单位1,所以此时的结果应该是1。这样可以确保递归函数能够正确地终止,并返回最终的结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-3-13 11:48:08

本帖最后由 jackz007 于 2024-3-13 12:12 编辑

       递归函数都有两个分支,一个分支是供递归到底时执行,另一个分支供递归未到底时,继续递归执行。所以,递归函数需要做的头一件事,就是判定递归是否已经到底。
       就本例而言,递归函数 sum(n) 是根据输入参数 n 来判断递归状态的,当 n > 0 时,递归未到达终点,n = 0 时,递归到达终点。
       以 sum(6) 为例,在递归过程中,n 值从 6 开始逐渐减小,当 n = 0 时,递归到达终点,从这个时候起,sum(0) 开始有了确定的返回值 1,于是,sum(1) = 1 * sum(0) = 1 * 1 = 1,sum(2) = 2 * sum(1) = 2 * 1 = 2,sum(3) = 3 * sum(2) = 3 * 2 = 6,sum(4) = 4 * sum(3) = 4 * 6 = 24 . . .,最后,递推出 sum(6) = 720。
sum(6)
   sum(5)
          sum(4)
               sum(3)
                  sum(2)
                         sum(1)
                              sum(0)             <--- 【递归终点】
                              return 1         <--- 【递归终点】
                         return 1 * sum(0) = 1
                  return 2 * sum(1) = 2 * 1 = 2
               return 3 * sum(2) = 3 * 2 = 6
          return 4 * sum(3) = 4 * 6 = 24
   return 5 * sum(4) = 5 * 24 = 120
return 6 * sum(5) = 6 * 120 = 720
页: [1]
查看完整版本: python中利用递归方法求5的阶乘