诸神之王 发表于 2020-2-15 13:18:54

想在一个函数中用while循环求一个阶层但是总是不出答案

这是我的代码
def y(x):
    i = 1
    while i <= x:
      x = x*i
      i = i+1
    return x

运行后
>>> y(5)
没有其他东西了

ctrl+c后
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
    y(5)
File "F:\study\Python\idle_study\jiayu5.py", line 5, in y
    i = i+1
KeyboardInterrupt

大佬们,这是什么意思啊

qiuyouzhi 发表于 2020-2-15 13:21:29

举个例子:
你要求5的阶乘,按照你的代码:
x = 5 * 1
i(1) + 1
变成了5和2,继续:
x = 5 * 2
i(2) + 1
变成了10和3,也就是说,i是永远追不上x的,所以陷入了死循环

qiuyouzhi 发表于 2020-2-15 13:28:28

正确应该这样:
def y(x):
        result = x
        x -= 1
        while x > 0:
                result *= x
                x -= 1
        return result

冬雪雪冬 发表于 2020-2-15 13:34:55

问题出在while i <= x:
当i增加时,x也在增加,永远不会退出循环。

major_lyu 发表于 2020-2-15 14:43:09

本帖最后由 major_lyu 于 2020-2-16 21:44 编辑

x一直在变大,i也一直在变大,而且x增长速度更快,i永远都不会大于x,while循环永远不终止。。。
def y(x)
      result = 1
      while x > 0:
            result *= x
            x -= 1
      return result

诸神之王 发表于 2020-2-16 11:26:26

major_lyu 发表于 2020-2-15 14:43
x一直在变大,i也一直在变大,而且x增长速度更快,i永远都不会大于x,while循环永远不终止。。。
def y(x) ...

多谢大佬

诸神之王 发表于 2020-2-16 11:27:00

冬雪雪冬 发表于 2020-2-15 13:34
问题出在while i

多谢
页: [1]
查看完整版本: 想在一个函数中用while循环求一个阶层但是总是不出答案