想在一个函数中用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
大佬们,这是什么意思啊
举个例子:
你要求5的阶乘,按照你的代码:
x = 5 * 1
i(1) + 1
变成了5和2,继续:
x = 5 * 2
i(2) + 1
变成了10和3,也就是说,i是永远追不上x的,所以陷入了死循环 正确应该这样:
def y(x):
result = x
x -= 1
while x > 0:
result *= x
x -= 1
return result 问题出在while i <= x:
当i增加时,x也在增加,永远不会退出循环。 本帖最后由 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
major_lyu 发表于 2020-2-15 14:43
x一直在变大,i也一直在变大,而且x增长速度更快,i永远都不会大于x,while循环永远不终止。。。
def y(x) ...
多谢大佬 冬雪雪冬 发表于 2020-2-15 13:34
问题出在while i
多谢
页:
[1]