我想知道为什么这不起作用:
f(x::Number) = begin x < 1 ? (y=0) : (y=2); return(y); end
我已经分配了n = 10,将它放在while循环中应该就像在那里放置一个10。在终端中运行它就像我在那里放置了一个raw_input()。
这有效:
n = 10
x = 1
while x < n:
x += 1
n += n * (x - 1)
print n
对我来说看起来一样......
谢谢!
答案 0 :(得分:1)
在第一个示例中,n
,您的限制正在增加(n += n * (x - 1)
)并且您有一个无限循环。在第二个中,限制是常量(10
),因此终止。
答案 1 :(得分:1)
因为在while循环中,对于每次迭代,您还会更新n
while x < n:
x += 1
n += n * (x - 1)
因此,在前几次迭代之后,n不再是10,并且它不断增加。
答案 2 :(得分:0)
在做了类似类型的更多循环之后,我终于理解了它。原因是这会产生一个无限循环,因为在:
INSERT INTO TEST_TABLE(TABID, TABNAME, DOB, CREATEDBY)
VALUES (SEQ_TAB_TABID.NEXTVAL, :1, TO_DATE(:2, 'MM/DD/YYYY'), :3)
n随x增加:
n = 10
x = 1
while x < n:
x += 1
n += n * (x - 1)
print n
所以x永远不会赶上n并导致无限循环。
这是有效的,因为10永远不会增加,x可以赶上它。
x += 1
n += n * (x - 1)