【发布时间】:2014-09-28 20:02:08
【问题描述】:
一个朋友打赌我不能递归地写这个。不幸的是,他赢了,但我仍然想知道我将如何做到这一点:
函数为:rw_in_range(start, low, high)
输入是:
start - 一个正整数,表示“梦游者”的起始位置
low - 一个正整数,表示允许“梦游者”游荡到的最左侧位置
high - 一个正整数,表示允许“梦游者”游荡到的最右侧位置
低
该函数应模拟随机游走,其中“梦游者”在低和高边界给定的位置范围内游荡。
梦游者随机走几步,其大小由调用我的函数给出:
def random_step():
""" chooses a random step (-1 or 1) and returns it.
inputs: none! However, make sure to use parens when calling it.
For example: random_step()
"""
return random.choice([-1, 1])
随机游走应该继续,直到给定的步骤导致“梦游者”到达/超出边界低或高之一。然后该函数应返回梦游者到达停止位置所走的步数。
例如,在第一行使用语句 print((' ' * start) + 'S'),它应该如下所示:
>>> rw_in_range(10, 5, 15)
S
S
S
S
S
S
S
S
S
S
9
我的功能目前是这样的:
def rw_in_range(start, low, high):
print(('' * start) + 'S')
new_start=start + random_step()
steps_in_rest= rw_in_range(new_start, low, high)
if new_start==low or new_start==high:
return rw_in_range(new_start, low, high)
我的问题是,如何修复我的代码以使其递归地运行此序列?因为它永远不会返回值。
【问题讨论】:
标签: python recursion range random-walk