Python家庭作业 - 没有意义

sei*_*u10 3 python integer list

好吧,我们的教授解释了(有点)这个问题,但它仍然没有多大意义.

问题:knice(f,a,b,k)如果对于某个整数a <= x <= b和某个整数n <= k,实现将返回1 的函数,fon 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
Run Code Online (Sandbox Code Playgroud)

就个人而言,这个例子对我来说毫无意义,所以想看看我是否能得到澄清.

OP EDIT 1/19/2012 3:03 pm 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
Run Code Online (Sandbox Code Playgroud)

Kat*_*iel 5

忽略他的代码; 你应该写下你觉得舒服的东西,然后再解决问题.

你想弄清楚是否

  • f(a) = a,或f(f(a)) = a,或...,或f^n(a) = a,,
  • f(a+1) = a+1,或f(f(a+1)) = a+1,或...,或f^n(a+1) = a+1,,
  • ...
  • f(b) = b,或者f(f(b)) = b......或者f^n(b) = b.

应立即想到一个明显的算法:逐个尝试所有这些值!您将需要两个(嵌套)循环,因为您正在迭代一个值的矩形.你现在可以看看该怎么办了?