一个朋友跟我打赌我不能递归地写这个。不幸的是他赢了,但我仍在想我该怎么做:
该函数是:rw_in_range(启动、低、高)
输入包括:
开始—表示“梦游者”开始位置的正整数
低—一个正整数,表示“梦游者”可以漫游到最左边的位置
高-一个正整数,代表“梦游者”可以漫游到的最右边的位置
低<;=开始<;=高
该函数应该模拟一个随机行走,“梦游者”在由低和高边界给定的位置范围内徘徊。在
梦游者随机走几步,其大小通过调用我的函数得到:
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')语句,它应该如下所示:
^{pr2}$九
我的函数当前如下所示:
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)
我的问题是,如何修复我的代码,让它递归地运行这个序列?因为它永远不会返回值。在
您的函数永远不会返回,因为您在返回时再次调用它。试试这个:
如果要计算步骤数,最好的方法是使用列表,如下面的代码:
如果要保留函数的接口,请使用以下代码:
相关问题 更多 >
编程相关推荐