某一个“天” 发表于 2024-1-30 18:43:45

最新版python教程P50讲递归 用迭代实现阶乘好像有几步多余

本帖最后由 某一个“天” 于 2024-1-30 18:46 编辑

# 迭代实现阶乘
def iter(n):
    for i in range(1, n):
      n *= i
    print(n)

iter(10)
直接这样不好吗?

FishC 发表于 2024-1-30 18:44:09

你提供的迭代实现阶乘的代码有一处小错误,range()函数的结束值是不包含在范围内的,所以应该将for循环的范围改为range(1, n+1)。此外,如果要计算n的阶乘,你需要设置一个变量来保存结果,并在每次迭代时更新它。下面是修正后的代码:

def iterative_factorial(n):
    result = 1
    for i in range(1, n+1):
      result *= i
    print(result)

iterative_factorial(10)

这样就可以得到正确的结果了。希望能帮到你!

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

陶远航 发表于 2024-1-30 19:05:47

这算啥多余。。。都一样啊,就少一个变量而已

某一个“天” 发表于 2024-1-30 19:14:58

陶远航 发表于 2024-1-30 19:05
这算啥多余。。。都一样啊,就少一个变量而已

我只是怕小甲鱼另有深意。。。

陶远航 发表于 2024-1-30 19:36:07

某一个“天” 发表于 2024-1-30 19:14
我只是怕小甲鱼另有深意。。。

6

jackz007 发表于 2024-1-30 19:59:29

本帖最后由 jackz007 于 2024-1-30 20:07 编辑

      函数属于工具,应该尽量避免输出任何信息,在本例中,函数 iter() 只需要返回计算结果,如有必要,输出信息应该由函数 iter() 的调用者来完成。就是说,iter() 不应该 print() 任何东西,必须 return 计算结果。

某一个“天” 发表于 2024-1-30 20:22:40

jackz007 发表于 2024-1-30 19:59
函数属于工具,应该尽量避免输出任何信息,在本例中,函数 iter() 只需要返回计算结果,如有必要,输 ...

哦 我懂你的意思,我是想省点事。谢谢你啦{:5_109:}

zhangchenyvn 发表于 2024-2-1 16:35:42

不多余

某一个“天” 发表于 2024-2-1 16:38:46

zhangchenyvn 发表于 2024-2-1 16:35
不多余

zhangchenyvn 发表于 2024-2-1 16:51:08

某一个“天” 发表于 2024-2-1 16:38


多一个少一个变量而已~
页: [1]
查看完整版本: 最新版python教程P50讲递归 用迭代实现阶乘好像有几步多余