我有一个奇怪的面试问题。也就是说:给定一个跳跃函数,如果跳转函数返回true,机器人可以跳1步,如果返回false则跳过1步,假设概率为50-50。
如何编写程序以保证机器人可以在不使用任何循环和变量的情况下跳一步。
提示:写一个递归问题来解决它。
我仍然不知道如何处理它。任何人都可以帮助我吗?
答案 0 :(得分:5)
如果你的jump()
函数有50%的机会向上跳一步或者向下跳一步,那么当它掉落时你需要递归调用该函数两次。
define jump_up():
if !jump():
jump_up()
jump_up()
这在基本情况下什么都不做,因为jump()
成功了,但是每次它落到一步,它都会保证跳起来两次,总是比它开始时高出一步。 / p>
这个解决方案假设一个无限的阶梯,因为你可以(理论上)在最终成功之前无限次地落下。