2
def rwSteps(start, low, hi):
    n=0
    while low <= start <= hi:
        print (start-low-1)*" " + "#" + (hi-start)*" ", n
        start+=random.choice((-1,1))
        n+=1
    return "%d steps" % (n-1)


print rwSteps(10, 5, 15)

上面的函数是我需要以递归方式重写的函数。该函数接受一个起点整数,以及一个低点和一个高点。从起点开始,函数应该从起点随机执行 +1 或 -1,直到达到上限或下限。这是我到目前为止所拥有的。

def RandomWalkSteps(start, low, hi):

    count = 0
    count = count + 1 

    if(low <= start <= hi):
        count = count + 1 
        start+=random.choice((-1,1))
        newStart = start
        RandomWalkSteps(newStart, low, hi)
        return count 

我觉得我已经很接近了,但是我遇到了将“count”语句放在哪里的麻烦,以便它在每个递归实例中正确递增。如果我遗漏了任何重要信息,我们将不胜感激任何帮助并随时对我大喊大叫。

4

3 回答 3

2
def RandomWalkSteps(start, low, hi):
    if low < start < hi:
        return 1 + RandomWalkSteps(random.choice((-1,1)), low, hi)
    return 0
于 2013-06-07T06:12:12.680 回答
1
def RandomWalkSteps(start, low, hi, count=0):
    if low < start < hi:
        return RandomWalkSteps(start+random.choice((-1,1)), low, hi, count+1)
    return count

print RandomWalkSteps(10, 5, 15)
于 2013-06-07T06:09:15.653 回答
0

我相信这就是您正在寻找的

def RandomWalkSteps(count, start, low, hi):
    if low <= start <= hi:
        start+=random.choice((-1,1))
        newStart = start
        return RandomWalkSteps(count+1, newStart, low, hi)
    else:
        return count

打电话RandomWalkSteps(0, x, y, z)而不是RandomWalkStep(x, y, z)

于 2013-06-07T06:07:15.383 回答