【发布时间】:2012-02-13 16:08:34
【问题描述】:
好的,我们的教授解释了(有点)这个问题,但它仍然没有多大意义。
问题:实现函数knice(f,a,b,k),如果对于某个整数a <= x <= b 和某个整数n <= k,将返回1,f 在x 上的n 个应用程序将是x,(例如f(f(f...(f(x)))) = x)和0,如果不是。
教授提供的是:
def knice(f,a,b,k):
f(f(f(...(f(x)))) = x
for i = a to b:
y = f(i)
if y = i break
for j = z to k:
y = f(y)
if y = i break
就我个人而言,这个例子对我来说毫无意义,所以看看我是否能得到澄清。
OP EDIT 2012 年 1 月 19 日下午 3:03 CST
这是在 GTA 的帮助下找到的最终功能:
def f(x):
return 2*x-3
def knice(f,a,b,k):
x = a
while x <= b:
n = 1
y = f(x)
if y == x:
return 1
while n <= k:
y = f(y)
n=n+1
if y == x:
return 1
x=x+1
return 0
【问题讨论】:
-
我认为缩进有点偏离,第二个
for循环可能应该在第一个循环内。另外,z是什么?最后,这个函数根本没有return。这个例子只是一个起点还是打算成为一个工作函数? -
这就是问题所在。教授没有具体说明任何示例的含义,他向全班 40 人解释了这一点,因为没有人知道该怎么做。老实说,我不知道它是 z 还是 2!
-
好吧,那就把它当作一个不工作的起点吧。通过一些重新排列和细微调整,您可以使该功能发挥作用。
-
@seiryuu10:如果您甚至无法理解教授显然是错误的,更不用说让它按原样工作了。我确实认为
z应该是2。 -
我可能只是“这里有一些我想让你做的伪代码”的例子。